Python 将一个表连接到另一个表中

Python 将一个表连接到另一个表中,python,pandas,Python,Pandas,我正试图从 当我试图抓住它的时候,它把佛罗里达黑豹队推到了一排,把数据搞乱了。所有团队名称都需要向下移动一行。我试图改变数据并尝试 dataset_one = dataset_one.shift(1) 然后加入统计表,但我得到了NaN 这些文档似乎展示了许多连接和合并具有类似列标题的数据的方法,但不确定在没有类似列标题的情况下,最好的解决方案是什么 代码: 输出: FLAFlorida Panthers GP W L OTL ... GF GA DIFF L10 STR

我正试图从

当我试图抓住它的时候,它把佛罗里达黑豹队推到了一排,把数据搞乱了。所有团队名称都需要向下移动一行。我试图改变数据并尝试

dataset_one = dataset_one.shift(1)
然后加入统计表,但我得到了NaN

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

代码:

输出:

 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

只需以稍微不同的方式创建df,以便它知道正确的标题是什么

dataset_one = pd.DataFrame(page[0], columns=["Team Name"])
然后,当您加入时,它应该正确对齐

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

dataset_one = page[0].to_frame(name='Team Name')

为@Noah的答案提供了另一种方法。您可以首先添加一个额外的行,
shift
df向下移动一行,然后将标题列指定为索引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)


嘿,谢谢你花时间留下这个答案。然而,当我这样做时,我得到了列下所有球队名称的NaN。不确定这背后的原因,或者我是否实现了错误的代码,但这就是我得到的。你是在加入之前还是之后得到NaN?在加入之前和之后。我在“团队名称”列下的每一项下都得到了NaN,我得到的另一个替代方法是,“'DataFrame'对象没有'to_frame'属性”。不知道会是什么,谢谢你的回答。这似乎对我有用。为了澄清原因,我对Pandas是个新手,但是你将表向下移动一行,然后将位置设置为第一个位置,并添加“团队”列标题?然后加入他们?这是对的吗?我现在看到这个解决方案的一个问题,因为它重叠了第二列,并且准确地切断了Columbus Blue JacketsYes。每行向下移动一行;用标题中的数据填充现在为空的第一行;重命名标题;继续处理。@DOBS-我也看到了。让我更新解决方案。@DOBS-我更新了解决方案。现在应该可以了。班特确实失去了最后一排。所以,在下移之前,首先应该在底部创建一个空行。
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)