我正在寻找一种方法,如何将 DataFrame 列移动更多行。
移动一行效果很好:
df = DataFrame(A=[1,2,3,4], B=[9,8,7,6])
julia> transform(df, "A" => ShiftedArrays.lag => :A1)
4×3 DataFrame
Row │ A B A1
│ Int64 Int64 Int64?
─────┼───────────────────────
1 │ 1 9 missing
2 │ 2 8 1
3 │ 3 7 2
4 │ 4 6 3
但是我无法找到如何使用具有更多参数的函数来转换整个列,如下所示(两者都不起作用):
transform(df, "A" => x -> ShiftedArrays.lag(x, 2) => :A1)
或
transform(df, ["A", 2] => f => :A1)
我希望有一个比使用 for 循环更合适的解决方案:-)
最佳答案
您需要在匿名函数周围添加额外的括号:
transform(df, "A" => (x -> ShiftedArrays.lag(x, 2)) => :A1)
Result:
Row │ A B A1
│ Int64 Int64 Int64?
─────┼───────────────────────
1 │ 1 9 missing
2 │ 2 8 missing
3 │ 3 7 1
4 │ 4 6 2
关于dataframe - Julia 数据帧 : shift a column by more rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74089956/