Выберите строки с пропущенным значением во фрейме данных Julia

#dataframe #julia #subset

#фрейм данных #julia #подмножество

Вопрос:

Я только начал изучать Julia и борюсь с подмножеством фреймов данных. Я хотел бы выбрать строки, в которых LABEL значение «B» и VALUE отсутствует. Выбор строк с «B» работает нормально, но попытка добавить фильтр для пропущенных не удается. Любые предложения, как это решить. Приветствуются советы по хорошей документации по поднабору / фильтрации фреймов данных в Julia. В документации Julia я не нашел решения.

 using DataFrames
df = DataFrame(ID = 1:5, LABEL = ["A", "A", "B", "B", "B"], VALUE = ["A1", "A2", "B1", "B2", missing])
df[df[:LABEL] .== "B", :] # works fine
df[df[:LABEL] .== "B" amp;amp; df[:VALUE] .== missing, :] # fails
  

Ответ №1:

Используйте:

 filter([:LABEL, :VALUE] => (l, v) -> l == "B" amp;amp; ismissing(v), df)
  

(очень похожий пример приведен в документации filter функции).

Если вы хотите использовать getindex , то напишите:

 df[(df.LABEL .== "B") .amp; ismissing.(df.VALUE), :]
  

Тот факт, что вам нужно использовать .amp; вместо amp;amp; при работе с массивами, не относится к DataFrames.jl — это распространенный шаблон в Julia в целом при индексации массивов с помощью логических значений.