首页 > 解决方案 > 查找每个客户最近的两次付款,然后找出两者之间的差异

问题描述

我有以下数据框。我想为每个 ID 找到最近的两次付款,并找到两次付款之间的差异,然后取平均值。例如,我想计算以下金额(2018-2017/2018)并将输出放在新列中。我是 python 初学者,我不确定如何做到这一点。

我试过了:

df["Growthrate"] = df.loc[:, "2016":].apply(lambda x: (v := x[x > 0][-2:]).diff()[-1] / v[-1], axis=1) 

但我不断收到无效的语法错误。任何帮助将不胜感激。我被困住了。

ID       2016   2017   2018   2019       
25471    50     0      10     400
22547    0      50     25     0
38754    0      1000   0      50
14523    100    500    0     1000
14789    400    400    400    400 

输出应该是

ID       2016   2017   2018   2019  Growth     
25471    50     0      10     400    97.5%
22547    0      50     25     0      -100%
38754    0      1000   0      50     -1900%
14523    100    500    0     1000     100%
14789    400    400    400    400     0%

标签: pythonpandasdataframelambda

解决方案



推荐阅读