我正在筹集筹款流失预测问题。有一个付款表,列出捐助者在不同时间支付的款项。我需要找到每个捐助者最近支付的款项。以下是数据的快照。这里PAMT是付款; EXTRELNO是捐赠者代码,PID是唯一的支付ID; PAYTYPECD是付款方式(银行,永久订单等);状态是付款状态(退款,正常付款,更正,召回)
PID PDATE PAMT EXTRELNO PAYTYPECD STATUS
0 38.0 1993-12-31 9.57 0000019 X CO
1 39.0 1993-12-31 41.32 0000020 X CO
2 40.0 1993-12-31 13.10 0000020 X CO
3 54091.0 1994-01-01 2.02 0000020 X CO
4 104480.0 1994-05-19 0.50 0000020 D OK
我已经尝试找出付款的最近日期。
df_pay.groupby('EXTRELNO').apply(lambda x: x['PDATE'].max()).reset_index()
但如何在该日期找到付款。请帮助解决这个问题和其他问题
答案 0 :(得分:0)
1-解决方案可能是:
for g,f in df_pay.groupby('EXTRELNO'):
print(f[f['PDATE'] == f['PDATE'].max()])
2-取决于频率的含义,但可能是:
df_pay.groupby(['PDATE'])['PID'].count()
3-小调整:
df_pay.groupby(['PAYTYPECD','STATUS','PDATE'])['PID'].count()
答案 1 :(得分:0)
1-查找每个捐赠者的最近交易
pd.DataFrame(df_pay.groupby('EXTRELNO').apply(lambda x: x['PDATE'].max()),columns=['recent_date'])
另一种方法
df_pay.sort_values(ascending=0, by='PDATE').groupby('EXTRELNO')['PDATE'].nth(0)