dataframe - Julia数据框直接访问行

标签 dataframe julia

在 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/

相关文章:

pandas - 有没有办法为 pandas 数据框中下面的行生成总和?

python - 使用数据框分组显示折线图

julia - 以非交互方式将函数参数传递给 Julia

types - Julia 函数类型注解

dataframe - 加入多个数据帧

julia - 两个结构可以相互引用吗? - Julia

python - Pandas DataFrame 的自定义方法

python - 选择数据框的一个子集,每个变量都有 N 年的数据值(value)

python - 当一列满足基于另一列的特定条件时,有没有办法迭代地查找数据帧的索引?

coding-style - julia 中的 "setindex! not defined"错误是什么?