【问题标题】:pandas dataframe how to sum all value of bigger columns per row熊猫数据框如何对每行较大列的所有值求和
【发布时间】:2021-05-30 19:21:41
【问题描述】:

我有一个数据框:

0.  1. 2. 3
2.  3. 5. 9
5.  1. 0. 3

对于列1,2,3 - 我希望每行的值是较高列的总和 所以新的 df 将是:

0. 1. 2. 3 
2. 17 14. 9
5. 4. 3. 3

最好的方法是什么?

【问题讨论】:

    标签: pandas dataframe data-science data-munging


    【解决方案1】:

    使用逆DataFrame.cumsum

    L = [1,2,3]
    df[L[::-1]] = df[L[::-1]].cumsum(axis=1)
    print (df)
         0     1     2    3
    0  2.0  17.0  14.0  9.0
    1  5.0   4.0   3.0  3.0
    

    【讨论】:

    • 我得到相反的结果:第 3 列 = 1+2+3 ;第 2 列 = 1+2 ;和 1 = 1 而不是 1 = 1+2+3 ; 2 = 3+2 ;和 3 = 3。我在原始问题中有一个类型可能会引起混淆,请查看我的编辑
    • x0 列的值 - 是每列 c 的总和,使得 c >= x0
    【解决方案2】:

    在还原列1, 2, 3 之后,让我们尝试cumsumaxis=1

    c = [1, 2, 3]
    df.loc[:, c] = df.loc[:, c[::-1]].cumsum(axis=1)
    

       0   1   2  3
    0  2  17  14  9
    1  5   4   3  3
    

    【讨论】:

      猜你喜欢
      • 2017-01-19
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      相关资源
      最近更新 更多