我试图在官方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
应该相当简单,但我尝试了几种直观的方法并且总是出错。有人能帮助我吗?
答案 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)