在python数据框中查找每个客户的最新付款

时间:2017-04-20 10:30:10

标签: python python-2.7 pandas 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. 如何查找每种付款的频率&状态。
  4. 我已经尝试找出付款的最近日期。

    df_pay.groupby('EXTRELNO').apply(lambda x: x['PDATE'].max()).reset_index()
    

    但如何在该日期找到付款。请帮助解决这个问题和其他问题

2 个答案:

答案 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)