选择具有缺失值的Julia DataFrame的数字列

问题描述 投票:3回答:2

我想选择DataFrame的所有列,其中数据类型是Number的子类型。但是,由于存在具有missing值的列,因此数值列数据类型可能类似于Union{Missing, Int64}

到目前为止,我想出了:

using DataFrames

df = DataFrame([["a", "b"], [1, missing] ,[2, 5]])

df_numerical = df[typeintersect.(colwise(eltype, df), Number) .!= Union{}]

这产生了预期的结果。

这样做有更简单,惯用的方法吗?可能类似于:

df.select_dtypes(include=[np.number])

在大熊猫中取自this question的答案?

dataframe julia
2个回答
5
投票
julia> df[(<:).(eltypes(df),Union{Number,Missing})]
2×2 DataFrame
│ Row │ x2      │ x3 │
├─────┼─────────┼────┤
│ 1   │ 1       │ 2  │
│ 2   │ missing │ 5  │

请注意,.是广播运营商,因此我必须以功能形式使用<:运算符。


3
投票

另一种方法可能是:

df_numerical = df[[i for i in names(df) if Base.nonmissingtype(eltype(df[i])) <: Number]]

要检索作为Number子类型的所有列,如果它们托管缺失数据则无关紧要。