python - 查找每个客户最近的两次付款,然后找出两者之间的差异
问题描述
我有以下数据框。我想为每个 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%
解决方案
推荐阅读
- swift - 我的 API 中有多个 JSON 密钥。如何使用 KEY 参数显示不同的 CollectionViewCell?
- powershell - PowerShell - 每 1 分钟循环一次
- android - 使用 adb 命令接听来电打开扬声器
- python - 从两个可变长度的字符串数组返回相似度矩阵(scipy 选项?)
- r - 在圆形图上添加圆形轴
- sql - SQL Server:在递增 id 的同时一一更新多行
- java - 预期 BEGIN_ARRAY 但为 STRING Gson、java、android
- r - 以不同列为条件的选定列的行平均值
- java - 在二维数组中搜索为 O(n) 且未排序的行
- r - 在 ggplot 上绘制 shapefile