Как вставить отсутствующие значения в мой фреймворк в Julia

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

Даже NA не работает.

Я получаю сообщение об ошибке

MethodError: Невозможно convert объект типа Missings.Missing в объект типа Int64. Это могло возникнуть из вызова конструктора Int64 (...), поскольку конструкторы типов возвращаются к методам преобразования. Stacktrace: [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) at. /loading.jl:522

Всего 1 ответ


Используйте 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! пара, которая делает обратное (т. е. eltype необязательный союз из eltype если вектор фактически не содержит отсутствующих значений).


Есть идеи?

10000