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

咨询:如何在Julia的DataFrame中计算行间时间差

在Julia中计算DataFrame行间时间差

你可以用两种方式实现类似R中mutate(diff=date-lag(date))的功能,以下是具体方法:

方法1:使用DataFrames的transform!函数

直接利用lag函数对日期列做滞后操作,再通过广播逐元素计算时间差:

# 计算行间时间差并添加为新列
transform!(csv, :date => (x -> x .- lag(x)) => :diff)

方法2:使用DataFramesMeta的@transform!宏(更贴近R的语法风格)

借助@transform!宏可以写出更简洁的代码,和你熟悉的R代码逻辑一致:

@transform!(csv, :diff = :date .- lag(:date))

关键说明:

  • Julia中向量间的逐元素运算需要用广播操作符(.),所以这里用.-而非-,确保每一行的日期与前一行日期逐一相减。
  • lag函数默认滞后1行,若需要滞后n行,可传入第二个参数,比如lag(:date, 2)表示滞后2行。
  • 计算后的diff列第一个值为missing,因为第一行没有前一行数据,符合预期。

优化日期读取代码

你可以在读取CSV时直接指定日期格式,省去后续的格式转换步骤:

csv = CSV.read(IOBuffer("""
date,Amount
2023-12-27 18:40,4
2023-12-27 18:45,254
2023-12-27 18:50,24
2023-12-27 18:55,24
2023-12-27 19:00,5
"""), DataFrame, dateformat="y-m-d H:M")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:33:26