Python Pandas:生成一个新列,该列计算特定列中该行上方的所有单元格的小计

时间:2018-11-04 01:39:48

标签: python pandas dataframe

对不起,标题似乎很混乱。这个问题真的很简单,但是我很困惑,需要在这里寻求帮助。

我现在拥有的数据框:

New_ID  STATE   MEAN
0   1   Lagos   7166.101571
1   2   Rivers  2464.065846
2   3   Oyo     1974.699365
3   4   Akwa    1839.126698
4   5   Kano    1757.642462

我想在第i行中创建一个新列,它将计算df [:i,'MEAN']。sum()/ df ['MEAN']。sum()

例如,对于数据框:

    ID  MEAN
0   1.0 5
1   2.0 10
2   3.0 15
3   4.0 30
4   5.0 40

我想要的输出:

     ID MEAN SUBTOTAL
0   1.0 5   0.05
1   2.0 10  0.10
2   3.0 15  0.30
3   4.0 30  0.60
4   5.0 40  1.00

我尝试了

df1['SUbTotal'] = df1.loc[:df1['New_ID'], 'MEAN']/df1['MEAN'].sum()

但它说:

Name: New_ID, dtype: int32' is an invalid key 

感谢您的时间

1 个答案:

答案 0 :(得分:4)

应该这样做,似乎您正在寻找cumsum

df['SUBTOTAL'] = df.MEAN.cumsum() / df.MEAN.sum()

>>> df
    ID  MEAN  SUBTOTAL
0  1.0     5      0.05
1  2.0    10      0.15
2  3.0    15      0.30
3  4.0    30      0.60
4  5.0    40      1.00