如何在Julia中向我的数据框插入缺失值

时间:2018-10-09 08:21:23

标签: dataframe julia

df3[10, :A] = missing
df3[15, :B] = missing
df3[15, :C] = missing

即使是NA也无法正常工作。

我遇到错误

  

MethodError:无法convert类型为Missings的对象。缺少到类型为Int64的对象   这可能是由于调用构造函数Int64(...)而引起的,   因为类型构造函数回退到转换方法。   堆栈跟踪:    [1] setindex!(:: Array {Int64,1},:: Missings.Missing,:: Int64),位于./array.jl:583    [2] insert_single_entry!(:: DataFrames.DataFrame,:: Missings.Missing,:: Int64,:: Symbol)位于/home/jrun/.julia/v0.6/DataFrames/src/dataframe/dataframe.jl:361    [3] setindex!(:: DataFrames.DataFrame,:: Missings.Missing,:: Int64,:: Symbol)位于/home/jrun/.julia/v0.6/DataFrames/src/dataframe/dataframe.jl:448    [4] include.string(:: String,:: String)位于./loading.jl:522

1 个答案:

答案 0 :(得分:7)

使用allowmissing!函数。

julia> using DataFrames

julia> df = DataFrame(a=[1,2,3])
3×1 DataFrame
│ Row │ a     │
│     │ Int64 │
├─────┼───────┤
│ 1   │ 1     │
│ 2   │ 2     │
│ 3   │ 3     │

julia> df.a[1] = missing
ERROR: MethodError: Cannot `convert` an object of type Missing to an object of type Int64

julia> allowmissing!(df)
3×1 DataFrame
│ Row │ a      │
│     │ Int64⍰ │
├─────┼────────┤
│ 1   │ 1      │
│ 2   │ 2      │
│ 3   │ 3      │

julia> df.a[1] = missing
missing

julia> df
3×1 DataFrame
│ Row │ a       │
│     │ Int64⍰  │
├─────┼─────────┤
│ 1   │ missing │
│ 2   │ 2       │
│ 3   │ 3       │

您可以看到DataFrame中的哪些列允许missing,因为它们在列名下的类型名称后以突出显示了。

您还可以使用allowmissing函数来创建新的DataFrame

两个函数都可以选择接受要转换的列。

最后,有一对disallowmissing / disallowmissing!进行相反的操作(即,如果向量实际上不包含缺失值,则从Missing剥离可选的eltype联合)。 / p>