Выберите числовые столбцы Julia DataFrame с пропущенными значениями - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу выбрать все столбцы 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])

в пандах, взятых из ответа на этот вопрос ?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018
julia> df[(<:).(eltypes(df),Union{Number,Missing})]
2×2 DataFrame
│ Row │ x2      │ x3 │
├─────┼─────────┼────┤
│ 1   │ 1       │ 2  │
│ 2   │ missing │ 5  │

Обратите внимание, что . является оператором вещания, и поэтому мне пришлось использовать оператор <: в функциональной форме.

0 голосов
/ 06 сентября 2018

Другой способ сделать это может быть:

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

Для извлечения всех столбцов, которые являются подтипом Number, независимо от того, содержат ли они отсутствующие данные или нет.

...