熊猫:如何用不同的列连接数据帧?

时间:2017-05-30 03:03:12

标签: python pandas dataframe

我试图在官方Pandas documentation找到答案,但发现它更有说服力而不是有用。基本上我有两个重叠但不相同的列列表的数据框:

df1:
   A   B
0  22  34
1  78  42

df2:
   B   C
0  76  29
1  11  67

我想合并/连接/追加它们,以便结果是

df3:
   A   B   C
0  22  34  nan
1  78  42  nan
2  nan 76  29
3  nan 11  67

应该相当简单,但我尝试了几种直观的方法并且总是出错。有人能帮助我吗?

3 个答案:

答案 0 :(得分:3)

您需要与参数how = outer

合并
df3 = df1.merge(df2, how = 'outer')

    A       B   C
0   22.0    34  NaN
1   78.0    42  NaN
2   NaN     76  29.0
3   NaN     11  67.0

答案 1 :(得分:2)

如果您只想连接可以使用的数据帧。

pd.concat([df1,df2])

输出:

      A   B     C
0  22.0  34   NaN
1  78.0  42   NaN
0   NaN  76  11.0
1   NaN  11  67.0

然后你可以reset_index重新创建一个简单的递增索引。

pd.concat([df,df2]).reset_index(drop = True)

输出:

      A   B     C
0  22.0  34   NaN
1  78.0  42   NaN
2   NaN  76  11.0
3   NaN  11  67.0

答案 2 :(得分:0)

@vaishali 和@scott-boston 解决方案都有效。更喜欢合并功能,因为它允许使用 how 参数更灵活地处理结果。但是如果涉及的列很少,concat 可以获得更好的性能

要优化@scott-boston 答案,您还可以使用内部 concat 参数 igonore_index 自动调整索引大小,而无需调用代码如下所示的其他函数:

pd.concat([df1,df2],ignore_index=True)

输出

      A   B     C
0  22.0  34   NaN
1  78.0  42   NaN
2   NaN  76  11.0
3   NaN  11  67.0

Python(版本 3.8.5)|大熊猫(版本 1.1.3)