Годовая сумма, основанная на условии в другом столбце данных Python 3+. - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть датафрейм с тремя столбцами: год, цена, PV.Я хочу, чтобы кумулятивная сумма столбца 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 голосов
/ 11 декабря 2018

Использование 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
...