我有一个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),但是我们能保持原样吗?
发布于 2018-03-26 14:41:47
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)https://stackoverflow.com/questions/49493720
复制相似问题