簡體   English   中英

在python數據框中查找每個客戶的最新付款

[英]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
  1. 我想查找每個捐贈者最近支付的款項。
  2. 捐贈頻率
  3. 如何找到每種付款方式和狀態的頻率。

我試圖找出最近的付款日期。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM