[英]Pandas: How to concatenate dataframes with different columns?
我试图在官方Pandas 文档中找到答案,但发现它比帮助更令人困惑。 基本上我有两个具有重叠但不相同的列列表的数据框:
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
应该相当简单,但我尝试了几种直观的方法,但总是出错。 有人可以帮我吗?
您需要与参数 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
如果您只想连接可以使用的数据帧。
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
@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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.