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

如何在Julia中为DataFrame的过夜时间数据添加一天?

如何用Julia为过夜时间数据添加一天?

针对你提供的连续约一天的小时数据场景(过夜时段需加一天修正日期),可以通过以下步骤实现:

实现代码

using CSV, DataFrames, Dates

# 读取原始数据
path = tempname()
write(path, "t\n9\n12\n18\n0\n5\n")
df = CSV.read(path, DataFrame, types=Dict(:t=>DateTime), dateformat="H")

# 提取小时字段用于判断跨天节点
df.hour = hour.(df.t)

# 标记跨天位置:当前小时小于前一个小时则为第二天起点
cross_day = [false; diff(df.hour) .< 0]

# 生成累计天数偏移:跨天后的所有记录需对应加天数
day_offset = cumsum(cross_day)

# 为时间字段添加天数偏移
df.t .+= Day.(day_offset)

# 清理临时字段(可选操作)
select!(df, :t)

运行结果

处理后的DataFrame输出如下:

5×1 DataFrame
 Row │ t
     │ DateTime
─────┼─────────────────────
   1 │ 0001-01-01T09:00:00
   2 │ 0001-01-01T12:00:00
   3 │ 0001-01-01T18:00:00
   4 │ 0001-01-02T00:00:00
   5 │ 0001-01-02T05:00:00

逻辑说明

  1. 提取小时字段:通过hour.(df.t)获取每个时间记录的小时数,作为跨天判断的依据。
  2. 标记跨天位置:利用diff(df.hour)计算相邻小时的差值,当差值为负时(如0点比前一条的18点小),说明该记录属于第二天。
  3. 生成天数偏移:用cumsum(cross_day)累计跨天次数,得到每条记录需要添加的天数(跨天后的记录偏移量为1,之前为0)。
  4. 应用偏移修正:将天数偏移转换为Day类型,加到原时间字段上,完成日期修正。

该方法同样适用于包含多次跨天的长时段小时数据,cumsum会自动累计每次跨天的偏移量。

内容的提问来源于stack exchange,提问作者Daniel YC Lin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:21:00