2 回答

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
由和最后使用-1創(chuàng)建的掩碼的多個(gè)值:Series.isinSeries.maskGroupBy.cumsum
df['result'] = (df['amount'].mask(df['action'].isin(['action_C','action_D']),
df['amount'] * -1)
.groupby(df['user'])
.cumsum())
print (df['result'])
0 10.0
1 15.0
2 10.0
3 -5.0
4 2.0
5 6.0
Name: result, dtype: float64
與幫助列類似的解決方案:
df['result'] = (df.assign(tmp = df['amount'].mask(df['action'].isin(['action_C','action_D']),
df['amount']*-1))
.groupby('user')['tmp']
.cumsum())

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
嘿希望這會給你一個(gè)提示:
首先,我對代表費(fèi)用的行動給出否定符號。
df.loc[df.action.isin(['action_C','action_D'])].amount = -1 * df.loc[df.action.isin(['action_C','action_D'])].amount
然后你像這樣創(chuàng)建結(jié)果列
df['result'] = df.amount.cumsum()
添加回答
舉報(bào)