如何为带DatetimeIndex的Pandas DataFrame新增行间隔小时差列
Pandas 计算DatetimeIndex相邻行时间差(小时单位)
需求
有一个携带DatetimeIndex的DataFrame,需要新增一列存储DatetimeIndex相邻行之间的时间差,单位要求为小时。由于数据量达数千行,不适合用for循环实现。
原始数据示例
Datetime Numbers 2020-11-27 08:30:00 1 2020-11-27 13:00:00 2 2020-11-27 15:15:00 3 2020-11-27 20:45:00 4 2020-11-28 08:45:00 5 2020-11-28 10:45:00 6 2020-12-01 04:00:00 7 2020-12-01 08:15:00 8 2020-12-01 12:45:00 9 2020-12-01 14:45:00 10 2020-12-01 17:15:00 11 ...
预期输出效果
Datetime Numbers Delta 2020-11-27 08:30:00 1 Nan 2020-11-27 13:00:00 2 4.5 2020-11-27 15:15:00 3 2.25 2020-11-27 20:45:00 4 5.5 2020-11-28 08:45:00 5 12 2020-11-28 10:45:00 6 2 2020-12-01 04:00:00 7 65.25 2020-12-01 08:15:00 8 4.25 2020-12-01 12:45:00 9 4.5 2020-12-01 14:45:00 10 2 2020-12-01 17:15:00 11 2.5 ...
解决方案
方案1(原找到的实现方法)
import numpy as np df = df.reset_index() df['Time'] = df['Datetime'].astype(np.int64) // 10**9 df['Delta'] = df['Time'].diff()/3600 df.drop(columns=['Time'],inplace =True) df.set_index('Datetime', inplace=True)
方案2(更简化实现,无需来回修改索引)
# 直接对索引做差分计算,一行代码即可完成 df['Delta'] = df.index.to_series().diff().dt.total_seconds() / 3600
内容的提问来源于stack exchange,提问作者Gus
相关产品推荐
相关产品推荐

