对来自不同数据帧的列求和 Pandas

summing columns from different dataframes Pandas

我有 3 个 DataFrame,都有超过 100 行和 1000 列。我正在尝试将所有这些 DataFrame 合并为一个,以便汇总每个 DataFrame 的公共列。我知道有一种称为“pd.DataFrame.sum()”的求和方法,但请记住,我有超过 1000 列,我无法手动添加每个公共列。我附上了样本 DataFrame 和我想要的结果。帮助将不胜感激。

#Sample DataFrames.
df_1 = pd.DataFrame({'a':[1,2,3],'b':[2,1,0],'c':[1,3,5]})
df_2 = pd.DataFrame({'a':[1,1,0],'b':[2,1,4],'c':[1,0,2],'d':[2,2,2]})
df_3 = pd.DataFrame({'a':[1,2,3],'c':[1,3,5], 'x':[2,3,4]})



     #Result.
df_total = pd.DataFrame({'a':[3,5,6],'b':[4,2,4],'c':[3,6,12],'d':[2,2,2], 'x':[2,3,4]})
df_total
        a   b   c   d   x
    0   3   4   3   2   2
    1   5   2   6   2   3
    2   6   4   12  2   4

让我们pd.concat然后sum

out = pd.concat([df_1,df_2,df_3],axis=1).sum(level=0,axis=1)
Out[7]: 
   a  b   c  d  x
0  3  4   3  2  2
1  5  2   6  2  3
2  6  4  12  2  4

您可以 addfill_value=0:

 df_1.add(df_2, fill_value=0).add(df_3, fill_value=0).astype(int)

输出:

   a  b   c  d  x
0  3  4   3  2  2
1  5  2   6  2  3
2  6  4  12  2  4

注意: pandas 本质上使大多数操作沿索引(索引和列 headers)对齐。