找出数据框中具有一些缺失值的列的子集。

4

给定来自 DataFrames.jl 的以下数据框:

julia> using DataFrames

julia> df = DataFrame(x1=[1, 2, 3], x2=Union{Int,Missing}[1, 2, 3], x3=[1, 2, missing])
3×3 DataFrame
 Row │ x1     x2      x3
     │ Int64  Int64?  Int64?
─────┼────────────────────────
   11       1        1
   22       2        2
   33       3  missing

我希望找到包含缺失值的列。

我已经尝试过了:

julia> names(df, Missing)
String[]

但是这是不正确的,因为names函数在传递一个类型时,会查找传递类型的子类型。
1个回答

5

如果你想查找缺失值的实际列,请使用以下命令:

julia> names(df, any.(ismissing, eachcol(df)))
1-element Vector{String}:
 "x3"

在这种方法中,我们迭代df数据框的每一列,并检查它是否包含至少一个缺失值。
如果您想要查找可能包含缺失值的列,则需要检查它们的元素类型:
julia> names(df, [eltype(col) >: Missing for col in eachcol(df)]) # using a comprehension
2-element Vector{String}:
 "x2"
 "x3"

julia> names(df, .>:(eltype.(eachcol(df)), Missing)) # using broadcasting
2-element Vector{String}:
 "x2"
 "x3"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接