选择缺少值的Julia DataFrame的数字列

时间:2018-09-06 13:52:17

标签: dataframe julia

我想选择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的回答中获取的大熊猫?

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

另一种实现方法可能是:

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

要检索作为Number子类型的所有列,无论它们是否托管丢失的数据都无关紧要。