You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中计算行间日期时间差并生成指定元组列表

计算DataFrame中每行与上一行的日期时间差并生成元组列表

需求说明

处理包含date列的DataFrame(该列日期时间无递增顺序),计算每行与上一行的日期时间差(以秒为单位),最终生成格式为[(<前序日期时间>, <当前日期时间>, <时间差>), ...]的元组列表。

解决方案代码

import pandas as pd
import numpy as np

# 生成示例日期数据并构造DataFrame
data = pd.date_range('1/1/2011', periods=10, freq='H')
df = pd.DataFrame({'date': data})

# 打乱行顺序,模拟日期无序的实际场景
df = df.sample(frac=1, random_state=42).reset_index(drop=True)

# 生成前序日期列
df['prev_date'] = df['date'].shift(1)
# 计算时间差(转换为秒)
df['time_diff_sec'] = (df['date'] - df['prev_date']).dt.total_seconds()

# 生成目标元组列表(跳过无前置日期的第一行)
result = list(df[['prev_date', 'date', 'time_diff_sec']].dropna().itertuples(index=False, name=None))

# 输出结果
print(result)

代码说明

  • sample(frac=1, random_state=42):随机打乱DataFrame的行顺序,模拟用户提到的「日期时间非递增」场景
  • shift(1):将date列整体下移一行,得到每行对应的前序日期值
  • dt.total_seconds():将pandas的时间差对象转换为以秒为单位的数值
  • itertuples(index=False, name=None):将DataFrame的行转换为无索引、无名称的元组,最后转为列表格式

内容的提问来源于stack exchange,提问作者vish0709

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:56:03