在 Julia DataFrames 中,可以直接访问列 :col
数据框的 df
通过写df[!, :col]
。这是直接访问行的类似快速方法吗?我知道我能做到df[2, :]
获取第 2 行的副本,但我不需要副本,因为我想更改该行的内容。
西格德干杯
最佳答案
从数据框中选择一行会返回一个 DataFrameRow
,即 view of the row在原始数据框中。因此,您对 DataFrameRow
所做的任何更改都将反射(reflect)在原始数据框中:
julia> using DataFrames
julia> df = DataFrame(a=1:3, b=4:6)
3×2 DataFrame
│ Row │ a │ b │
│ │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1 │ 1 │ 4 │
│ 2 │ 2 │ 5 │
│ 3 │ 3 │ 6 │
julia> dfr = df[2, :]
DataFrameRow
│ Row │ a │ b │
│ │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 2 │ 2 │ 5 │
julia> dfr.b = 100
100
julia> df
3×2 DataFrame
│ Row │ a │ b │
│ │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1 │ 1 │ 4 │
│ 2 │ 2 │ 100 │
│ 3 │ 3 │ 6 │
当然,如果您只想更改一行中几个条目的值,则可以直接执行此操作,而无需先创建 DataFrameRow
:
julia> df = DataFrame(a=1:3, b=4:6)
3×2 DataFrame
│ Row │ a │ b │
│ │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1 │ 1 │ 4 │
│ 2 │ 2 │ 5 │
│ 3 │ 3 │ 6 │
julia> df[2, :] = [101, 102]
2-element Array{Int64,1}:
101
102
julia> df
3×2 DataFrame
│ Row │ a │ b │
│ │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1 │ 1 │ 4 │
│ 2 │ 101 │ 102 │
│ 3 │ 3 │ 6 │
关于dataframe - Julia数据框直接访问行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60285272/