Man*_*uel 2 indexing dataframe julia keyerror
我想创建一个DataFrame的索引子集并在其中使用一个变量.在这种情况下,我想将第一列的所有-9999值更改为NA.如果我这样做:df[df[:1] .== -9999, :1] = NA它的工作原理应该如此..但是如果我使用变量作为索引器它会导致错误(LoadError:KeyError:key:我找不到):
i = 1
df[df[:i] .== -9999, :i] = NA
Run Code Online (Sandbox Code Playgroud)
:i 实际上是朱莉娅的象征:
julia> typeof(:i)
Symbol
Run Code Online (Sandbox Code Playgroud)
你可以定义一个绑定到符号的变量,如下所示:
julia> i = Symbol(2)
Symbol("2")
Run Code Online (Sandbox Code Playgroud)
然后你可以简单地使用df[df[i] .== 1, i] = 123:
julia> df
10×1 DataFrames.DataFrame
? Row ? 2 ?
?????????????
? 1 ? 123 ?
? 2 ? 2 ?
? 3 ? 3 ?
? 4 ? 4 ?
? 5 ? 5 ?
? 6 ? 6 ?
? 7 ? 7 ?
? 8 ? 8 ?
? 9 ? 9 ?
? 10 ? 10 ?
Run Code Online (Sandbox Code Playgroud)
值得一提的是,在你的榜样df[df[:1] .== -9999, :1],:1是不是一个符号:
julia> :1
1
Run Code Online (Sandbox Code Playgroud)
事实上,表达式等于df[df[1] .== -9999, 1]其中有一个相应的getindex方法,其argument(col_ind)可以接受一个公共索引:
julia> @which df[df[1].==1, 1]
getindex{T<:Real}(df::DataFrames.DataFrame, row_inds::AbstractArray{T,1}, col_ind::Union{Real,Symbol})
Run Code Online (Sandbox Code Playgroud)
既然你只是想改变的第一(N)列,有没有什么区别Symbol("1"),并1只要你的列名有规律地排列为:
? Row ? 1 ? 2 ? 3 ?...
?????????????????????????
? 1 ? ? ? ?...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
753 次 |
| 最近记录: |