两个数据帧的python聚合列

时间:2017-10-19 10:23:39

标签: python pandas numpy dataframe

我有两个数据框:

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

基本上,我想聚合相似的列值,并且还包含与结果不相似的列。请注意,df1df2将始终具有相同的索引。

我怎么能在python的pandas库中做到这一点?

2 个答案:

答案 0 :(得分:4)

按列使用concat + groupby并汇总sum

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)

您可以将addfill_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