Julia dataframe直接访问行

Julia dataframe直接访问行,dataframe,julia,Dataframe,Julia,在Julia数据帧中,可以通过写入df[!,:col]直接访问数据帧df的列。直接访问行也是类似的快速方式吗?我知道我可以通过df[2,:]获得第2行的副本,但我不想要副本,因为我想更改该行的内容 Cheers Sigurd从数据帧中选择一行将返回一个DataFrameRow,该行是原始数据帧中的一行。因此,对DataFrameRow所做的任何更改都将反映在原始数据框中: julia> using DataFrames julia> df = DataFrame(a=1:3, b=

在Julia数据帧中,可以通过写入
df[!,:col]
直接访问数据帧
df
的列
。直接访问行也是类似的快速方式吗?我知道我可以通过
df[2,:]
获得第2行的副本,但我不想要副本,因为我想更改该行的内容


Cheers Sigurd

从数据帧中选择一行将返回一个
DataFrameRow
,该行是原始数据帧中的一行。因此,对
DataFrameRow
所做的任何更改都将反映在原始数据框中:

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     │

谢谢你的回答。我很困惑,因为它与
不兼容操作员。我发现我的问题措词不当。我想做的是获取一行或多行
df[(df.a.==2.&(df.b.==5),:]
并对其进行更改。我想我可以使用eachrow对行进行迭代,并更改符合我标准的行。是的,
eachrow
是一个不错的选择。也有可能,根据您的应用程序,您不需要太担心复制数据。例如,如果您执行类似于
newdf=@transform(df,c=2*:b)
的操作,其中
@transform
来自哪里,它将返回一个新的数据帧。但对于许多数据操作活动来说,它可能足够快。当然,将数据视为不可变的更容易推理,并有助于避免错误。