【发布时间】:2022-01-05 11:11:17
【问题描述】:
想象这样一种情况,每次客户访问我们时,他们都应该支付 100 美元,除非自上次付款后已过去
知道每个客户的约会日期,是否可以预测应该付款的约会?
以下面的数据框为例:
pd.DataFrame({
'dd_mm_aa': {
0: '01/12/21',
1: '01/12/21',
2: '10/12/21',
3: '10/12/21',
4: '03/01/22',
5: '03/01/22',
6: '03/01/22',
7: '15/01/22',
8: '15/01/22',
9: '06/02/22'},
'name': {0: 'John',
1: 'Mary',
2: 'John',
3: 'Peter',
4: 'John',
5: 'Mary',
6: 'Peter',
7: 'Mary',
8: 'John',
9: 'John'}
})
我能够使用下面的代码在客户第一次预约时添加要支付的价值。
# Adding 150 at firts appearance of a patient
df['dd_mm_aa'] = pd.to_datetime(df['dd_mm_aa'], dayfirst=True)
df.loc[df.groupby('name')["dd_mm_aa"].rank() == 1, 'value'] = 100
之后,dataframe如下:
dd_mm_aa name value
01/12/21 John 100
01/12/21 Mary 100
10/12/21 John
10/12/21 Peter 100
03/01/22 John
03/01/22 Mary
03/01/22 Peter
15/01/22 Mary
15/01/22 John
06/02/22 John
但是,考虑>30天的时间间隔,最终输出应该是:
dd_mm_aa name value
01/12/21 John 100
01/12/21 Mary 100
10/12/21 John
10/12/21 Peter 100
03/01/22 John 100
03/01/22 Mary 100
03/01/22 Peter
15/01/22 Mary
15/01/22 John
06/02/22 John 100
【问题讨论】:
标签: python pandas dataframe datetime pandas-groupby