在朱莉娅DataFrames就可以直接访问列:col一个数据帧中df的写作df[!, :col]。这是直接访问一行的类似快速方法吗?我知道我可以df[2, :]获取第 2 行的副本,但我不想要副本,因为我想更改该行的内容。
干杯西格德
从数据框中选择一行会返回一个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)