Julia 替换Juila中缺少的值

Julia 替换Juila中缺少的值,julia,Julia,我让数据框包含一些缺失值,我想用LoanAmount列的平均值替换所有缺失值 df[ismissing.(df.LoanAmount),:LoanAmount]= floor(mean(skipmissing(df.LoanAmount))) 但是当我运行上述代码时,我得到了 MethodError: no method matching setindex!(::DataFrame, ::Float64, ::BitArray{1}, ::Symbol) 使用skipmissing,例如:

我让数据框包含一些缺失值,我想用LoanAmount列的平均值替换所有缺失值

df[ismissing.(df.LoanAmount),:LoanAmount]= floor(mean(skipmissing(df.LoanAmount))) 
但是当我运行上述代码时,我得到了

MethodError: no method matching setindex!(::DataFrame, ::Float64, ::BitArray{1}, ::Symbol)

使用
skipmissing
,例如:

mean(skipmissing(df.LoanAmount))
对第二个已编辑问题的回答:您应该使用点运算符(
)广播作业,如下例所示:

julia> df = DataFrame(col=rand([missing;1:3],10))                                                      
10×1 DataFrame                                                                                         
│ Row │ col     │                                                                                      
│     │ Int64?  │                                                                                      
├─────┼─────────┤                                                                                      
│ 1   │ missing │                                                                                      
│ 2   │ 3       │                                                                                      
│ 3   │ 2       │                                                                                      
│ 4   │ 2       │                                                                                      
│ 5   │ missing │                                                                                      
│ 6   │ missing │                                                                                      
│ 7   │ missing │                                                                                      
│ 8   │ 3       │                                                                                      
│ 9   │ 1       │                                                                                      
│ 10  │ 3       │                                                                                      
                                                                                                       
julia> df[ismissing.(df.col),:col] .= floor(mean(skipmissing(df.col)));                                 
                                                                                                       
julia> df                                                                                              
10×1 DataFrame                                                                                         
│ Row │ col    │                                                                                       
│     │ Int64? │                                                                                       
├─────┼────────┤                                                                                       
│ 1   │ 2      │                                                                                       
│ 2   │ 3      │                                                                                       
│ 3   │ 2      │                                                                                       
│ 4   │ 2      │                                                                                       
│ 5   │ 2      │                                                                                       
│ 6   │ 2      │                                                                                       
│ 7   │ 2      │                                                                                       
│ 8   │ 3      │                                                                                       
│ 9   │ 1      │                                                                                       
│ 10  │ 3      │                                                                                       
Impute.jl 另一种选择是使用Bogumil建议的
Impute.jl

Impute.fill(df;value=(x)->floor(mean(x)))
我也发现了这个, 当我们需要用平均值替换时

replace!(df.col,missing => floor(mean(skipmissing(df[!,:col]))))
当我们需要替换为模式时

replace!(df.col,missing => mode(skipmissing(df[!,:col]))) 

您可以使用Impute.jl软件包来实现您的目标。@泽山,请不要编辑问题来提出完全不同的问题。普泽米斯劳的回答显然是正确的,如果不看编辑历史,现在看起来相当奇怪。可能根本不需要再问第二个后续问题。@Bogumil,我想用mean和mod替换缺失的值,但无法做到这一点,我尝试使用impute软件包,但正在使用插值来处理缺少的值。
impute.fill
默认使用
mean
,因此如果需要
mean
,则不必指定它(假设有一个浮点列)。