首页 > 解决方案 > 如何按属性分组并计算该属性的连续票证之间的时间

问题描述

所以,我正在使用一个大约有 20 列的数据框,但只有两列非常重要。

指数 ID 日期
1 01-40-50 2021-12-01 16:54:00
2 01-10 2021-10-11 13:28:00
3 03-48-58 2021-11-05 16:54:00
4 01-40-50 2021-12-06 19:34:00
5 03-48-58 2021-12-09 12:14:00
6 01-10 2021-08-06 19:34:00
7 03-48-58 2021-10-01 11:44:00

总共有 90 个不同的 ID 和几千行。我想做的是:

  1. 按 ID 对条目进行分组
  2. 按日期对这些 ID 行进行排序
  3. 然后计算一个时间戳与另一个时间戳之间的差异
  4. 并创建一个包含这些条目的列(然后将其可视化为 90 个不同的 ID)

虽然我认为使用函数 groupby 会很容易,但我遇到了很多麻烦。将不胜感激任何关于如何开始的意见!谢谢!

标签: python-3.xpandasdataframe

解决方案


你可以这样做:

>>> df.groupby("ID")["Date"].apply(lambda x: x.sort_values().diff())
ID         Index 
01-10      6                     NaT
           2        65 days 17:54:00
01-40-50   1                     NaT
           4         5 days 02:40:00
03-48-58   7                     NaT
           3        35 days 05:10:00
           5        33 days 19:20:00

推荐阅读