基于其他列Python 3+ Pandas数据框上的条件的年度明智总和

时间:2018-12-11 10:08:38

标签: python-3.x pandas cumsum

我有一个包含三列的数据框,分别是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

1 个答案:

答案 0 :(得分:0)

numpy.whereDataFrameGroupBy.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