我正在尝试从https://www.espn.com/nhl/standings获取数据
当我试图获取它时,它正在将佛罗里达州黑豹的一行放到最高位置,并扰乱了数据。所有团队的名字都需要下移一行。我试着改变数据并尝试,
dataset_one = dataset_one.shift(1)然后加入统计表,但我得到的是NaN。
文档似乎展示了许多连接和合并具有相似列标题的数据的方法,但不确定在没有类似列标题的情况下最好的解决方案。
代码:
import pandas as pd
page = pd.read_html('https://www.espn.com/nhl/standings')
dataset_one = page[0] # Team Names
dataset_two = page[1] # Stats
combined_data = dataset_one.join(dataset_two)
print(combined_data)输出:
FLAFlorida Panthers GP W L OTL ... GF GA DIFF L10 STRK
0 CBJColumbus Blue Jackets 6 5 0 1 ... 22 16 6 5-0-1 W2
1 CARCarolina Hurricanes 10 4 3 3 ... 24 28 -4 4-3-3 L1
2 DALDallas Stars 6 5 1 0 ... 18 10 8 5-1-0 W4
3 TBTampa Bay Lightning 6 4 1 1 ... 23 14 9 4-1-1 L2
4 CHIChicago Blackhawks 6 4 1 1 ... 19 14 5 4-1-1 W1
5 NSHNashville Predators 10 3 4 3 ... 26 31 -5 3-4-3 W1
6 DETDetroit Red Wings 8 4 4 0 ... 20 24 -4 4-4-0 L1所需:
GP W L OTL ... GF GA DIFF L10 STRK
0 FLAFlorida Panthers 6 5 0 1 ... 22 16 6 5-0-1 W2
1 CBJColumbus Blue Jackets 10 4 3 3 ... 24 28 -4 4-3-3 L1
2 CARCarolina Hurricanes 6 5 1 0 ... 18 10 8 5-1-0 W4
3 DALDallas Stars 6 4 1 1 ... 23 14 9 4-1-1 L2
4 TBTampa Bay Lightning 6 4 1 1 ... 19 14 5 4-1-1 W1
5 CHIChicago Blackhawks 10 3 4 3 ... 26 31 -5 3-4-3 W1
6 NSHNashville Predators 8 4 4 0 ... 20 24 -4 4-4-0 L1
7 DETDetriot Red Wings 10 2 6 2 6 ... 20 35 -15 2-6-2 L6发布于 2021-02-02 07:00:47
为@Noah的回答提供了另一种方法。您可以首先添加额外的行,将df向下减少一行,然后将标题shift赋值为索引0值。
import pandas as pd
page = pd.read_html('https://www.espn.com/nhl/standings')
dataset_one = page[0] # Team Names
dataset_two = page[1] # Stats
# Shifting down by one row
dataset_one.loc[max(dataset_one.index) + 1, :] = None
dataset_one = dataset_one.shift(1)
dataset_one.iloc[0] = dataset_one.columns
dataset_one.columns = ['team']
combined_data = dataset_one.join(dataset_two)发布于 2021-02-02 06:54:39
只需稍微不同地创建df,这样它就知道什么是正确的头文件。
dataset_one = pd.DataFrame(page[0], columns=["Team Name"])然后,当您join它时,它应该正确对齐。
另一种选择是执行以下操作:
dataset_one = page[0].to_frame(name='Team Name')https://stackoverflow.com/questions/66001148
复制相似问题