如何计算以前的付款总额?
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'])
您可以屏蔽您的数据以仅保留“付款”行,然后 shift
和 ffill
:
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())
)
我有一个包含列 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'])
您可以屏蔽您的数据以仅保留“付款”行,然后 shift
和 ffill
:
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())
)