Pandas计算同列相邻日期的分钟级时间差方法
Pandas计算相邻日期分钟级时间差实现方案
需求说明
- 数据集包含存储日期时间值的
DATE列 - 需要逐行计算相邻两个日期的分钟级时间差
- 计算结果存入名为
time_interval的新列 - 原始数据集参考:

- 期望输出效果参考:

原代码问题
原有代码存在语法错误,axis是Pandas内置方法的入参,不能直接写在列运算表达式中,且未调用正确的相邻行差值计算逻辑:
# 错误代码 df['time_interval'] = (df['DATE'],axis=0 - df['DATE'],axis=1) * 24 * 60
正确实现代码
import pandas as pd # 先将DATE列转换为标准datetime格式,若列本身已是datetime类型可跳过该行 df['DATE'] = pd.to_datetime(df['DATE']) # 计算相邻行时间差,转换为分钟单位 df['time_interval'] = df['DATE'].diff().dt.total_seconds() / 60
逻辑说明
diff()方法默认计算当前行与上一行的差值,第一行没有上序相邻值会返回空值,和示例期望效果一致dt.total_seconds()会把时间差类型的结果转换为总秒数,除以60即可得到分钟级差值- 如果需要把第一行的空值替换为0,可在表达式末尾追加
.fillna(0)
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

