【问题标题】:How except one value from a sum? Pandas如何从总和中除去一个值?熊猫
【发布时间】:2022-01-20 09:40:07
【问题描述】:

我有这个 df,我想在具有相同“periodo”和相同“i”的“Pij”列下方添加一个新列“Sum”

 Periodo i  j       Pij           
0   1    1  1   0.298507    
1   1    1  2   0.253731    
2   1    1  3   0.447761    
3   1    2  2   0.843170    
4   1    2  1   0.134907    
5   1    2  3   0.021922    

结果应该是

 Periodo i  j       Pij      Sum    
0   1    1  1   0.298507    0.7014
1   1    1  2   0.253731    0.4477  
2   1    1  3   0.447761    0
3   1    2  2   0.843170    0.8650
4   1    2  1   0.134907    0.0219
5   1    2  3   0.021922    0

我试过 groupby(["Periodo","i"]).cumsum()

【问题讨论】:

    标签: python pandas dataframe group-by pandas-groupby


    【解决方案1】:

    首先更改所有行的顺序(通过在DataFrame.iloc 中的索引交换DataFrame 行),然后在GroupBy.transform 中使用lambda 函数与Series.shiftSeries.cumsum,最后再次通过iloc 交换到原始顺序:

    df['Sum'] = (df.iloc[::-1]
                   .groupby(["Periodo","i"])['Pij']
                   .transform(lambda x: x.shift(fill_value=0).cumsum())
                   .iloc[::-1])
    print (df)
       Periodo  i  j       Pij       Sum
    0        1  1  1  0.298507  0.701492
    1        1  1  2  0.253731  0.447761
    2        1  1  3  0.447761  0.000000
    3        1  2  2  0.843170  0.156829
    4        1  2  1  0.134907  0.021922
    5        1  2  3  0.021922  0.000000
    

    【讨论】:

      猜你喜欢
      • 2020-03-26
      • 2014-06-10
      • 2017-10-15
      • 2019-11-20
      • 1970-01-01
      • 2021-12-14
      • 2021-03-22
      • 2017-07-03
      • 2013-12-04
      相关资源
      最近更新 更多