如何计算以前的付款总额?

How to calculate sum previous payment?

我有一个包含列 user_id 的数据集,键入并购买:

我想计算上次付款的最大金额。

示例表:

user_id type purchase prev_payment
1 request 12362 NA
1 request 32543 NA
1 request 23413 NA
1 request 12344 NA
1 payment 15316 NA
1 request 32252 15316
1 request 34531 15316
1 payment 32536 15316
1 request 2343256 32536
1 request 234323 32536
data = [[1, 'request', 12362], [1, 'request', 32543], [1, 'request', 23413], [1, 'request', 12344], [1, 'payment', 15316],
 [1, 'request', 32252], [1, 'request', 34531], [1, 'payment', 32536], [1, 'request', 2343256], [1, 'request', 234323]]

df = pd.DataFrame(data, columns = ['user_id', 'type', 'purchase'])

您可以屏蔽您的数据以仅保留“付款”行,然后 shiftffill:

df['prev_payment'] = df['purchase'].where(df['type'].eq('payment')).shift().ffill()

输出:

      type  purchase  prev_payment
0  request     12362           NaN
1  request     32543           NaN
2  request     23413           NaN
3  request     12344           NaN
4  payment     15316           NaN
5  request     32252       15316.0
6  request     34531       15316.0
7  payment     32536       15316.0
8  request   2343256       32536.0
9  request    234323       32536.0
每组:
df['prev_payment'] = (df['purchase']
                      .where(df['type'].eq('payment'))
                      .groupby(df['user_id'])
                      .apply(lambda s: s.shift().ffill())
                     )