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)