![](/img/trans.png)
[英]Find the two most recent dates for each customer in Python using pandas
[英]Finding most recent payment for each customer in a python dataframe
我正在研究籌款流失預測問題。 有一個支付表,列出了捐贈者在不同時間支付的款項。 我需要找到每個捐贈者最近支付的款項。 以下是數據快照。 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()
但是,如何找到該日期付款。 請幫助解決這個問題和其他問題
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-查找每個捐贈者的最新交易
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.