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

如何计算Pandas时间序列与当日固定时间的小时差值?

Pandas计算日期时间与当日特定时间的小时差值最快实现方法

问题场景

假设有一个包含日期时间的Pandas Series,示例代码如下:

import pandas as pd

data = [
    "2023-08-14 21:56",
    "2023-08-15 23:04",
    "2023-08-16 15:43",
    "2023-08-17 12:05",
    "2023-08-18 22:19",
]
s = pd.Series(data, dtype="datetime64[ns]")

需要计算每个日期时间与当日21:00的小时差值,期望得到如下结果:

0    0.93
1    2.07
2   -5.28
3   -8.92
4    1.32
dtype: float64

最快实现方法

使用Pandas的矢量化操作是最优方案,完全利用内置优化逻辑,避免循环带来的性能损耗,具体代码如下:

# 构造每个日期对应的当日21:00时间序列
target_time = s.dt.normalize() + pd.Timedelta(hours=21)
# 计算时间差并转换为小时数,保留两位小数
hour_diff = (s - target_time).dt.total_seconds() / 3600
hour_diff = hour_diff.round(2)

代码说明

  • s.dt.normalize():将原时间序列的时间部分归零,得到每个日期的00:00:00时刻
  • 加上pd.Timedelta(hours=21):得到每个日期对应的21:00:00目标时间
  • (s - target_time).dt.total_seconds():计算两个时间的差值并转换为总秒数,除以3600得到小时数
  • round(2):将结果保留两位小数,与期望输出格式一致

这种方法在数据量较大时的性能优势尤为明显,远快于apply或手动循环的实现方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:37:35