python - 熊猫:计算日期时间戳之间的先前记录之间的运行差异
问题描述
我有一个跟踪用户交互的数据集。如果同一个用户在同一个半小时内有两次交互,我想把它算作一次交互,所以我需要计算数据帧中记录之间的时间差
我在 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,但我要么严重误解了它的用法(可能!),要么它没有我正在寻找的功能。
谢谢!
解决方案
按用户列分组并执行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
推荐阅读
- c - 由于内存未释放,LWIP 在一段时间后挂起
- python - 如何在同一张图上绘制来自不同模型的多条学习曲线?
- regex - 如何使用正则表达式提取器从响应标头中提取元素
- mysql - 如何在另一台主机上将 kafka 与 MySQL 连接?
- c++ - 将数组传递给函数的大小控制
- java - java - 如何修复Java maven项目中的“目标org.owasp:dependency-check-maven:4.0.2:聚合失败。:NullPointerException的执行默认值”?
- javascript - 在 Vuejs 中观察 window.scrollY 的变化
- mysql - 如何选择类似于字符串前 n 个字符的标题?
- c# - missing_index_[number] 来自哪里
- swift - 如何从 Swift 中数组的第一项获取字典项的值?