#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 в целом при индексации массивов с помощью логических значений.