2 回答

TA贡献1719条经验 获得超6个赞
由和最后使用-1创建的掩码的多个值: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贡献1993条经验 获得超5个赞
嘿希望这会给你一个提示:
首先,我对代表费用的行动给出否定符号。
df.loc[df.action.isin(['action_C','action_D'])].amount = -1 * df.loc[df.action.isin(['action_C','action_D'])].amount
然后你像这样创建结果列
df['result'] = df.amount.cumsum()
添加回答
举报