我有两个数据框:
df1
A B C D
Index
1 0 1 1 3
2 1 0 3 1
3 4 0 1 1
4 0 2 2 2
df2
A B
Index
1 1 2
2 3 4
3 0 0
4 1 2
我希望我的输出
df_result
A B C D
Index
1 1 3 1 3
2 4 4 3 1
3 4 0 1 1
4 1 4 2 2
基本上,我想聚合相似的列值,并且还包含与结果不相似的列。请注意,df1
和df2
将始终具有相同的索引。
我怎么能在python的pandas库中做到这一点?
答案 0 :(得分:4)
df = pd.concat([df1, df2], axis=1).groupby(level=0, axis=1).sum()
print (df)
A B C D
Index
1 1 3 1 3
2 4 4 3 1
3 4 0 1 1
4 1 4 2 2
df = pd.concat([df1, df2], axis=1).sum(axis=1, level=0)
print (df)
A B C D
Index
1 1 3 1 3
2 4 4 3 1
3 4 0 1 1
4 1 4 2 2
答案 1 :(得分:2)
您可以将add
与fill_value
In [4336]: df1.add(df2, fill_value=0)
Out[4336]:
A B C D
Index
1 1 3 1.0 3.0
2 4 4 3.0 1.0
3 4 0 1.0 1.0
4 1 4 2.0 2.0
或者,使用reindex
In [4341]: df1 + df2.reindex(columns=df1.columns, fill_value=0)
Out[4341]:
A B C D
Index
1 1 3 1 3
2 4 4 3 1
3 4 0 1 1
4 1 4 2 2