![](/img/trans.png)
[英]Pandas: Combining DataFrames with nested arrays or merging the JSON output
[英]Merging/Combining Dataframes in Pandas
我有一个df1,例如:
B A C
B 1
A 1
C 2
,以及df2,例如:
C E D
C 2 3
E 1
D 2
列和行“ C”在两个数据框中都是相同的。
我想合并这些数据框,以便得到
B A C D E
B 1
A 1
C 2 2 3
D 1
E 2
是否有捷径可寻? pd.concat和pd.append似乎不起作用。 谢谢!
编辑:df1.combine_first(df2)可以工作(感谢@jezarel),但是我们可以保持原始顺序吗?
有一个问题, combine_first
总是对列命名索引进行排序,因此需要使用合并列名称reindex
:
idx = df1.columns.append(df2.columns).unique()
print (idx)
Index(['B', 'A', 'C', 'E', 'D'], dtype='object')
df = df1.combine_first(df2).reindex(index=idx, columns=idx)
print (df)
B A C E D
B NaN 1.0 NaN NaN NaN
A NaN NaN 1.0 NaN NaN
C 2.0 NaN NaN 2.0 3.0
E NaN NaN NaN NaN 1.0
D NaN NaN 2.0 NaN NaN
更一般的解决方案:
c = df1.columns.append(df2.columns).unique()
i = df1.index.append(df2.index).unique()
df = df1.combine_first(df2).reindex(index=i, columns=c)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.