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

仅已知起始日期和连续小时数如何用Pandas填充日期?

许可证日志时间拼接Python实现方案

依赖引入

使用pandas完成结构化数据处理:

import pandas as pd

核心实现逻辑

  • 首先将日志头部读取到的startdate转换为pandas datetime格式作为基准日期
  • 新一天判定规则:当前行小时值小于上一行小时值时,代表新的一天开始,日期偏移量+1
  • 累计日期偏移量后,结合基准日期和当前小时值,生成完整时间戳

完整可运行代码示例

# 1. 读取日志头部的起始日期,示例值为2023-10-01,可替换为实际读取到的startdate值
start_date = pd.to_datetime("2023-10-01")

# 2. 模拟你已得到的许可证日志DataFrame,可替换为实际读取到的数据
df = pd.DataFrame({
    "hour": [0,1,2,22,23,0,1,2], # 小时序列,23后接0代表新一天开始
    "license_used": [3,5,8,15,11,2,4,7] # 其他业务字段可直接保留
})

# 3. 计算每日偏移量:首行默认偏移0天,每遇到新一天偏移量加1
df["day_offset"] = (df["hour"].diff() < 0).cumsum()

# 4. 拼接生成完整时间列
df["full_datetime"] = start_date + pd.to_timedelta(df["day_offset"], unit="D") + pd.to_timedelta(df["hour"], unit="H")

# 可选:删除临时计算用的偏移量列
df = df.drop(columns=["day_offset"])

结果说明

运行代码后生成的full_datetime列即可匹配预期输出:

  • 第一组0~23点对应起始日期当天的各小时时间
  • 后续出现0点时自动切换为下一天的对应时间
    如果起始日期startdate本身包含小时信息,只需调整时间拼接逻辑,去掉小时偏移的重复计算即可

内容的提问来源于stack exchange,提问作者P.Hert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:24:06