python从两个数据帧聚合列

python从两个数据帧聚合列,python,pandas,numpy,dataframe,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_结果 A B C D Index 1 1 3 1 3 2 4 4

我有两个数据帧:

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_结果

       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库中执行此操作?

按列使用+并聚合
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

按列使用+并聚合
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


您可以使用
add
fill\u 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

您可以使用
add
fill\u 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

这真是太快了,我有一种感觉,你在问题发布之前就开始键入答案;-)就连我都觉得萨米人几分钟前吃过晚饭,所以也许这对我有帮助;)天哪,谢谢你。我想今天是我的幸运日:D.在4分钟内接受答案。那真是太快了。我有一种感觉,你开始在问题发布之前键入答案;-)就连我都觉得萨米人几分钟前吃过晚饭,所以也许这对我有帮助;)天哪,谢谢你。我想今天是我的幸运日:D.在4分钟内接受答案。