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

如何将从日期提取的小时转换为含日期偏移的累计小时数?

解决方案:计算累计小时数(以首个日期为基准)

嘿,这个需求其实很好实现,核心就是把日期时间转成可计算的格式,然后以第一天为基准累加小时。咱们一步步来:

1. 先把日期字符串转成datetime类型

首先得把你的POETime和POXTime这两列从字符串转成pandas能识别的datetime对象,这样才能做日期差计算:

import pandas as pd

# 假设你的DataFrame叫df,替换成你实际的变量名即可
df['POETime'] = pd.to_datetime(df['POETime'], format='%d/%m/%Y %H:%M')
df['POXTime'] = pd.to_datetime(df['POXTime'], format='%d/%m/%Y %H:%M')

2. 确定基准日期

取DataFrame里第一条记录的日期作为基准(只保留日期部分,忽略具体时间):

base_date = df['POXTime'].dt.date.iloc[0]

3. 计算每个记录与基准日的天数差

用每个记录的日期减去基准日,得到相隔的天数:

df['days_since_base'] = (df['POXTime'].dt.date - base_date).dt.days

4. 计算累计小时数

这里要注意:pandas的dt.hour返回的是0-23的小时数,而你需要的是1-24的格式,所以先加1转成你需要的范围,再加上天数差乘以24的累计小时:

# 处理POXTime的累计小时
df['POXHour_cumulative'] = df['days_since_base'] * 24 + (df['POXTime'].dt.hour + 1)

# 同理处理POETime的累计小时
df['POEHour_cumulative'] = df['days_since_base'] * 24 + (df['POETime'].dt.hour + 1)

验证一下你的示例

拿你给的日期切换例子测试:

  • 01/05/2018 00:09:dt.hour是0,加1得1,天数差0,累计小时就是0*24+1=1,和你示例里的结果一致。
  • 02/05/2018 02:17:dt.hour是2,加1得3,天数差1,累计小时=1*24+3=27,完美匹配你的示例。
  • 02/05/2018 17:18:dt.hour是17,加1得18,天数差1,累计小时=24+18=42,也和你要的结果对得上。

这样处理后,不管后续有多少天的数据,都会自动按24的倍数累加小时数,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:58:27