Pandas合并具有相同行数的两个数据集

2024-09-27 07:29:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个具有相同行数的表(第二个表是通过处理T1中的文本从第一个表计算出来的)。我把它们都存储为熊猫数据框。T2与T1不是公共列。这是一个例子,因为我的桌子很大:

T1:
| name  | street  | city   |
|-------|---------|--------|
| David | street1 | Prague |
| John  | street2 | Berlin |
| Joe   | street3 | London |

T2:
| computed1 | computed2 |
|-----------|-----------|
| 0.5       | 0.3       |
| 0.2       | 0.8       |
| 0.1       | 0.6       |

Merged:
| name  | street  | city   | computed1 | computed2 |
|-------|---------|--------|-----------|-----------|
| David | street1 | Prague | 0.5       | 0.3       |
| John  | street2 | Berlin | 0.2       | 0.8       |
| Joe   | street3 | London | 0.1       | 0.6       |

我试过这些命令:

pd.concat([T1,T2])
pd.merge([T1,T2])
result=T1.join(T1)

有了concat和merge,我只得到前一千个组合,剩下的用nan填充(我仔细检查了两个都是相同的大小),并用.加入它而不是组合它们,因为没有任何共同之处。

有没有办法把熊猫的这两张桌子结合起来?

谢谢


Tags: namestreetcityjohndavidt1londonjoe
3条回答

默认索引需要在reset_index()之前concat

df = pd.concat([T1.reset_index(drop=True),T2.reset_index(drop=Tru‌​e)], axis=1)

我想补充一点,pd.concat可以通过提供轴作为列来实现您想要的功能。像这样:

pd.concat([T1,T2],axis=1)

另一种方法是合并索引值:

df = T1.reset_index().merge(T2.reset_index(), left_index=True, right_index=True, how='left)

相关问题 更多 >

    热门问题