我有一个包含三列的数据框,分别是Year,Price和PV。如果Price列中的值不等于零,我希望按Year列重置PV列的累计和。
df = pd.DataFrame({"Year": [2000] * 3 + [2001] * 3,
"Value": [0,100,0,0,100,100],
"PV": [7,8,9,12,13,14],
'Cumsum':[0,15,0,0,25,39]})
print (df)
Year Value PV Cumsum
0 2000 0 7 0
1 2000 100 8 15
2 2000 0 9 0
3 2001 0 12 0
4 2001 100 13 25
5 2001 100 14 39
答案 0 :(得分:0)
将numpy.where
与DataFrameGroupBy.cumsum
一起使用:
df['Cumsum'] = np.where(df['Value'] == 0, 0, df.groupby('Year')['PV'].cumsum())
print (df)
Year Value PV Cumsum
0 2000 0 7 0
1 2000 100 8 15
2 2000 0 9 0
3 2001 0 12 0
4 2001 100 13 25
5 2001 100 14 39