Преобразование фрейма данных с меткой в массив в julia
У меня есть кадр данных с заголовком в Julia, но мне нужно преобразовать это в массив для некоторой фильтрации, есть и аналогичная запись, которую люди предлагают
используя:
iris[:, 1:3]
чтобы получить массив из dataframe, но этот метод не будет работать с dataframe с заголовком, любое предложение, что я должен делать?
формат данных:
FP | C1 | Cz | C2 ....
* | * | * | * ....
. | . | . | . ....
. | . | . | . ....
. | . | . | . ....
Ответы
Ответ 1
Вы пробовали convert(Matrix, iris[:,1:3])
?
например,
julia> using DataFrames
julia> df = DataFrame(a = 1:4, b = 1:4, c = randn(4), d = randn(4))
4×4 DataFrame
│ Row │ a │ b │ c │ d │
│ │ Int64 │ Int64 │ Float64 │ Float64 │
├─────┼───────┼───────┼──────────┼────────────┤
│ 1 │ 1 │ 1 │ 1.72172 │ -0.377729 │
│ 2 │ 2 │ 2 │ 0.206415 │ -0.266014 │
│ 3 │ 3 │ 3 │ 1.03785 │ -0.0317582 │
│ 4 │ 4 │ 4 │ 0.632473 │ -0.409014 │
julia> convert(Matrix, df[:,1:3])
4×3 Array{Float64,2}:
1.0 1.0 1.72172
2.0 2.0 0.206415
3.0 3.0 1.03785
4.0 4.0 0.632473
Ответ 2
Принятый ответ хорошо подходит для ответа на вопрос, как указано.
Если единственная причина, по которой вы хотите преобразовать DataFrame в массив, - это его фильтрация, однако, возможно, стоит изучить методы, доступные для фильтрации объектов DataFrame напрямую. Для некоторых примеров см. https://dataframesjl.readthedocs.io/en/latest/subsets.html и https://dataframesjl.readthedocs.io/en/latest/split_apply_combine.html.
(Извините, если это лучше подходит для комментария, чем ответ - недостаточно репутации, чтобы комментировать здесь еще.)
Ответ 3
Обновление метода convert
, теперь, convert(::Type{Array}, df::AbstractDataFrame)
устарело в пользу:
using DataFrames
convert(Matrix, df)
Что эквивалентно Matrix(df)
Ответ 4
Это не работает в Julia 0.7 и выше. Вместо этого, попробуйте Matrix(df)
и ознакомьтесь с руководством здесь.
Ответ 5
convert(Array, iris[:,1:3])
работал для Julia версии 1.1.1