如何在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
相关产品推荐
相关产品推荐

