如何基于msg列计算每条记录与同msg首次出现记录的时间差?
嘿,我来帮你搞定这个计算每条记录与同msg首次出现时间差的需求!先把你的需求和数据理清楚:
原始数据集
| user-id | date-time | msg |
|---|---|---|
| 1 | 2016-12-09 10:25:00 | 1 |
| 2 | 2016-12-09 10:26:00 | 0 |
| 3 | 2016-12-09 10:26:00 | 1 |
| 2 | 2016-12-09 10:27:00 | 1 |
| 1 | 2016-12-09 10:28:00 | 2 |
| 2 | 2016-12-09 10:28:00 | 1 |
| 3 | 2016-12-09 10:29:00 | 2 |
| 2 | 2016-12-09 10:29:00 | 1 |
| 1 | 2016-12-09 10:30:00 | 3 |
期望输出
你想要新增time-difference列,计算每条记录和对应msg首次出现的时间差,示例如下:
| user-id | date-time | msg | time-difference |
|---|---|---|---|
| 1 | 2016-12-09 10:25:00 | 1 | 00:00:00 |
| 2 | 2016-12-09 10:26:00 | 0 | 00:00:00 |
| 3 | 2016-12-09 10:26:00 | 1 | 00:01:00 |
| 2 | 2016-12-09 10:27:00 | 1 | 00:02:00 |
| 1 | 2016-12-09 10:28:00 | 2 | 00:00:00 |
| 2 | 2016-12-09 10:28:00 | 1 | 00:03:00 |
| 3 | 2016-12-09 10:29:00 | 2 | 00:01:00 |
| 2 | 2016-12-09 10:29:00 | 1 | 00:04:00 |
| 1 | 2016-12-09 10:30:00 | 3 | 00:00:00 |
解决方案(用Python Pandas实现)
这是处理这类时间差计算最常用的方式,步骤清晰易懂:
- 先把
date-time列转换成datetime类型——只有转为时间格式才能正确计算差值 - 按
msg分组,提取每个msg的首次出现时间 - 把首次时间合并回原数据,计算时间差并格式化为
HH:MM:SS的样式
直接上可运行的代码:
import pandas as pd # 加载你的数据集(如果是从文件读取,替换成pd.read_csv('你的文件路径')即可) data = pd.DataFrame({ 'user-id': [1,2,3,2,1,2,3,2,1], 'date-time': ['2016-12-09 10:25:00', '2016-12-09 10:26:00', '2016-12-09 10:26:00', '2016-12-09 10:27:00', '2016-12-09 10:28:00', '2016-12-09 10:28:00', '2016-12-09 10:29:00', '2016-12-09 10:29:00', '2016-12-09 10:30:00'], 'msg': [1,0,1,1,2,1,2,1,3] }) # 转换日期列为datetime格式 data['date-time'] = pd.to_datetime(data['date-time']) # 计算每个msg的首次出现时间 first_occurrence = data.groupby('msg')['date-time'].min().reset_index(name='first-time') # 将首次时间合并回原数据集 data = pd.merge(data, first_occurrence, on='msg') # 计算时间差并格式化为HH:MM:SS data['time-difference'] = (data['date-time'] - data['first-time']).dt.total_seconds().apply( lambda x: f"{int(x//3600):02d}:{int((x%3600)//60):02d}:{int(x%60):02d}" ) # 删除临时的first-time列,保持结果整洁 data = data.drop('first-time', axis=1) # 输出结果 print(data)
运行这段代码后,你就能得到和示例完全一致的结果啦!
内容的提问来源于stack exchange,提问作者Elham
相关产品推荐
相关产品推荐

