首页 > 解决方案 > 熊猫:计算日期时间戳之间的先前记录之间的运行差异

问题描述

我有一个跟踪用户交互的数据集。如果同一个用户在同一个半小时内有两次交互,我想把它算作一次交互,所以我需要计算数据帧中记录之间的时间差

我在 Pandas 中这样做。假设它按 user_id 排序,然后是日期时间戳。并且当遇到新 ID 时需要重置,因此需要存储以前的 ID 以与当前 ID 进行比较。这是所需的输出

user id       datetime               desired column: minute diff from prior timestamp
1             2020-03-27T12:29:00    NAN
1             2020-03-27T12:31:00    2
1             2020-03-27T14:03:00    92
1             2020-03-27T14:27:00    24
2             2020-03-27T11:29:00    NAN
2             2020-03-27T14:29:00    180
2             2020-03-27T14:54:00    25
2             2020-03-27T18:20:00    216

我尝试过使用 Pandas.DataFram.rolling,但我要么严重误解了它的用法(可能!),要么它没有我正在寻找的功能。

谢谢!

标签: pythonpython-3.xpandas

解决方案


按用户列分组并执行pandas.Series.diff,然后获得总分钟数。

df['datetime'] = pd.to_datetime(df['datetime'])
df['output'] = df.groupby('user').datetime.diff().dt.total_seconds().div(60)

输出

      user            datetime  output
0        1 2020-03-27 12:29:00     NaN
1        1 2020-03-27 12:31:00     2.0
2        1 2020-03-27 14:03:00    92.0
3        1 2020-03-27 14:27:00    24.0
4        2 2020-03-27 11:29:00     NaN
5        2 2020-03-27 14:29:00   180.0
6        2 2020-03-27 14:54:00    25.0
7        2 2020-03-27 18:20:00   206.0

推荐阅读