【问题标题】:summing columns from different dataframes Pandas对来自不同数据框 Pandas 的列求和
【发布时间】:2021-02-14 04:08:02
【问题描述】:

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

#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

【问题讨论】:

    标签: python pandas data-manipulation data-wrangling


    【解决方案1】:

    让我们先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
    

    【讨论】:

      【解决方案2】:

      你可以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 本质上会沿着索引(索引和列标题)对齐大多数操作。

      【讨论】:

        猜你喜欢
        • 2022-01-12
        • 1970-01-01
        • 2017-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-01
        • 1970-01-01
        • 2015-03-06
        相关资源
        最近更新 更多