gpt4 book ai didi

dataframe - Julia DataFrames 中是否有 diff() 函数,比如 Pandas?

转载 作者:行者123 更新时间:2023-12-04 11:08:27 26 4
gpt4 key购买 nike

我在 Julia 中有一个 DataFrame,我想创建一个新列来表示特定列中连续行之间的差异。在 python Pandas 中,我会简单地使用 df.series.diff() .有 Julia 等效项吗?
例如:

data
1
2
4
6
7

# in pandas

df['diff_data'] = df.data.diff()

data diff_data
1 NaN
2 1
4 2
6 2
7 1

最佳答案

您可以像这样使用 ShiftedArrays.jl。
声明风格:

julia> using DataFrames, ShiftedArrays

julia> df = DataFrame(data=[1, 2, 4, 6, 7])
5×1 DataFrame
Row │ data
│ Int64
─────┼───────
1 │ 1
2 │ 2
3 │ 4
4 │ 6
5 │ 7

julia> transform(df, :data => (x -> x - lag(x)) => :data_diff)
5×2 DataFrame
Row │ data data_diff
│ Int64 Int64?
─────┼──────────────────
1 │ 1 missing
2 │ 2 1
3 │ 4 2
4 │ 6 2
5 │ 7 1
命令式(到位):
julia> df = DataFrame(data=[1, 2, 4, 6, 7])
5×1 DataFrame
Row │ data
│ Int64
─────┼───────
1 │ 1
2 │ 2
3 │ 4
4 │ 6
5 │ 7

julia> df.data_diff = df.data - lag(df.data)
5-element Vector{Union{Missing, Int64}}:
missing
1
2
2
1

julia> df
5×2 DataFrame
Row │ data data_diff
│ Int64 Int64?
─────┼──────────────────
1 │ 1 missing
2 │ 2 1
3 │ 4 2
4 │ 6 2
5 │ 7 1
diff您不需要额外的包,并且可以执行以下类似的操作:
julia> df.data_diff = [missing; diff(df.data)]
5-element Vector{Union{Missing, Int64}}:
missing
1
2
2
1
(问题是 diff 是一个通用函数,它确实将向量的长度从 n 更改为 n-1,因此您必须在前面手动添加 missing)

关于dataframe - Julia DataFrames 中是否有 diff() 函数,比如 Pandas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67904666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com