python - Pandas,每个 id 的平均差异日期
问题描述
我有一个看起来像这样的数据框:
745416 ,2019-03-13 ,0.89 ,_3428611
1015533 ,2019-03-13 ,1.99 ,_3428674
486224 ,2019-03-13 ,16.99 ,_3427319
486224 ,2019-03-13 ,9.99 ,_3427320
745416 ,2019-03-13 ,0.89 ,_3428629
176106 ,2019-03-13 ,1.99 ,_3428983
486224 ,2019-03-13 ,13.49 ,_3427321
1015533 ,2019-03-13 ,1.99 ,_3428675
288537 ,2019-03-13 ,15.99 ,_3426780
745416 ,2019-03-13 ,1.19 ,_3428626
176106 ,2019-03-13 ,1.79 ,_3428987
67092 ,2019-03-13 ,16.99 ,_3426557
67092 ,2019-03-13 ,15.49 ,_3426562
67092 ,2019-03-13 ,11.49 ,_3426558
它是一个订单列表,一个ID可以有多行,当然日期可以改变。
我想计算每个 ID 的订单之间的平均间隔。
我试图做的事情:
按 id 分组
对于每个 ID,请在 Date 列上执行 diff().mean()。
grouped = df.groupby('ID')
for a in grouped:
r['id'] = a['id']
r['avg_interval'] = a['date'].diff().mean()
我想要的输出:
123123, 2 days
123453, 1 day 5 hours
122656, 4 days
143143, 2 days
123123, 2 days
17 2767, 2 days
我确信有更好的方法来做到这一点。
解决方案
你可以这样做:
df.groupby('ID').apply(lambda x: ((x['date']-x['date'].shift()).fillna(0)).mean())
但在执行此操作之前,请确保将日期列转换为 python 日期格式:
df['date']=pd.to_datetime(df['date'],format='%Y-%m-%d')
推荐阅读
- java - 获取 LUUID,前提是我有一个 JUUID,来自 MongoDB for Kotlin with Spring Boot
- python - 尝试显示头部时出现数据框错误
- flutter - 颤振谷歌地图图像标记不会出现在中心
- flutter - 我们如何创建自定义的 getter 和 setter,在 Flutter 中这样做有什么好处?
- matlab - 使用 cplex 和 yalmip 的简单二进制矩阵不可行
- multithreading - 无法使用 bitbake 将 C 文件添加到 Yocto 层
- javascript - 使用 usestate 布尔值的反应性页面在 Reactnative 中不起作用
- bash - Bash glob,如何对非单位长度的字符串进行或运算?
- android - 升级flutter android构建工具
- java - 输入'列表