繁体   English   中英

Pandas:如何连接具有不同列的数据框?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM