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

如何在Julia DataFrame中对列进行多行偏移操作?

在Julia DataFrame中实现列的多行偏移

要实现多行偏移,只需调整函数传递的写法,确保转换逻辑被正确识别即可,以下是两种高效方案:

方案1:正确包裹匿名函数

将ShiftedArrays.lag的参数逻辑完整放在匿名函数中,再按列名 => 转换函数 => 新列名的结构传递给transform:

using DataFrames, ShiftedArrays

df = DataFrame(A=[1,2,3,4], B=[9,8,7,6])
transform(df, "A" => (x -> ShiftedArrays.lag(x, 2)) => :A1)

执行后输出结果:

4×3 DataFrame
 Row │ A      B      A1
     │ Int64  Int64  Int64?
─────┼───────────────────────
   1 │     1      9  missing
   2 │     2      8  missing
   3 │     3      7        1
   4 │     4      6        2

方案2:用Partial简化写法

如果觉得匿名函数繁琐,可导入Functors包的Partial工具,固定lag的偏移参数,让代码更简洁:

using Functors
transform(df, "A" => Partial(ShiftedArrays.lag, 2) => :A1)

该写法与方案1效果完全一致。

原写法无效的原因

  • 第一种错误写法将=> :A1放在了匿名函数内部,破坏了transform要求的列 => 函数 => 新列映射结构,导致程序无法识别新列名。
  • 第二种写法把数值2和列名放在同一数组里,transform会将其视为要读取的列名,但DataFrame中不存在名为2的列,因此报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:55:24