首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pandas中将一个表连接到另一个表

在pandas中将一个表连接到另一个表
EN

Stack Overflow用户
提问于 2021-02-02 06:38:51
回答 2查看 37关注 0票数 1

我正在尝试从https://www.espn.com/nhl/standings获取数据

当我试图获取它时,它正在将佛罗里达州黑豹的一行放到最高位置,并扰乱了数据。所有团队的名字都需要下移一行。我试着改变数据并尝试,

代码语言:javascript
复制
dataset_one = dataset_one.shift(1)

然后加入统计表,但我得到的是NaN。

文档似乎展示了许多连接和合并具有相似列标题的数据的方法,但不确定在没有类似列标题的情况下最好的解决方案。

代码:

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
 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

所需:

代码语言:javascript
复制
                             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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-02 07:00:47

为@Noah的回答提供了另一种方法。您可以首先添加额外的行,将df向下减少一行,然后将标题shift赋值为索引0值。

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2021-02-02 06:54:39

只需稍微不同地创建df,这样它就知道什么是正确的头文件。

代码语言:javascript
复制
dataset_one = pd.DataFrame(page[0], columns=["Team Name"])

然后,当您join它时,它应该正确对齐。

另一种选择是执行以下操作:

代码语言:javascript
复制
dataset_one = page[0].to_frame(name='Team Name')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66001148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档