我在 Julia 中有一个 DataFrame,我想创建一个新列来表示特定列中连续行之间的差异。在 python 熊猫中,我会简单地使用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
Run Code Online (Sandbox Code Playgroud)
您可以像这样使用 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
Run Code Online (Sandbox Code Playgroud)
命令式(到位):
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
Run Code Online (Sandbox Code Playgroud)
与diff
你不需要额外的软件包,可以做同样的情况如下:
julia> df.data_diff = [missing; diff(df.data)]
5-element Vector{Union{Missing, Int64}}:
missing
1
2
2
1
Run Code Online (Sandbox Code Playgroud)
(问题是这diff
是一个通用函数,它确实将向量的长度从 更改为n
,n-1
因此您必须missing
在前面手动添加)
归档时间: |
|
查看次数: |
225 次 |
最近记录: |