首页 > 解决方案 > 在 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" && df[:VALUE] .== missing, :] # fails

标签: dataframejuliasubset

解决方案


采用:

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

(函数的文档中给出了一个非常相似的例子filter)。

如果你想使用getindex然后写:

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

在使用数组时需要使用.&而不是&&使用数组的事实并不是 DataFrames.jl 特有的——这通常是 Julia 中使用布尔值索引数组时的常见模式。


推荐阅读