选择缺少值的Julia DataFrame的数字列
我想选择数据框中数据类型为选择缺少值的Julia DataFrame的数字列,dataframe,julia,Dataframe,Julia,我想选择数据框中数据类型为Number子类型的所有列。但是,由于存在缺少值的列,因此数字列数据类型可能类似于Union{missing,Int64} 到目前为止,我提出了: using DataFrames df = DataFrame([["a", "b"], [1, missing] ,[2, 5]]) df_numerical = df[typeintersect.(colwise(eltype, df), Number) .!= Union{}] 这将产生预期的结果 问题 有没有更
Number
子类型的所有列。但是,由于存在缺少值的列,因此数字列数据类型可能类似于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])
在大熊猫身上,根据对?的回答,另一种方法是:
df_numerical = df[[i for i in names(df) if Base.nonmissingtype(eltype(df[i])) <: Number]]
df_numerical=df[[i代表名称中的i(df),如果是Base.nonmissingtype(eltype(df[i]))julia>df[(这是一个非常好的解决方案,但会失败,例如对于[missing,missing]
并且此向量的类型不允许使用数字。我假设数据帧中通常不存在只包含缺少
值的列。但是,如果这样做,则可以将它们过滤掉:df[(
julia> df[(<:).(eltypes(df),Union{Number,Missing})]
2×2 DataFrame
│ Row │ x2 │ x3 │
├─────┼─────────┼────┤
│ 1 │ 1 │ 2 │
│ 2 │ missing │ 5 │