Julia 数据框直接访问行

Sig*_*sen 4 dataframe julia

在朱莉娅DataFrames就可以直接访问列:col一个数据帧中df的写作df[!, :col]。这是直接访问一行的类似快速方法吗?我知道我可以df[2, :]获取第 2 行的副本,但我不想要副本,因为我想更改该行的内容。

干杯西格德

Cam*_*nek 6

从数据框中选择一行会返回一个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     ?
Run Code Online (Sandbox Code Playgroud)

当然,如果您只想连续更改几个条目的值,则可以直接执行此操作,而无需先创建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     ?
Run Code Online (Sandbox Code Playgroud)