web-dev-qa-db-ja.com

juliaでラベル付きデータフレームを配列に変換する

Juliaにヘッダー付きのデータフレームがありますが、フィルタリングのためにこれを配列に変換する必要があります。

iris[:, 1:3]

データフレームから配列を取得するには、このメソッドはヘッダー付きのデータフレームでは機能しません。

データフレーム形式:

FP | C1 | Cz | C2 ....
*  | *  | *  | *  ....
.  | .  | .  | .  ....
.  | .  | .  | .  ....
.  | .  | .  | .  ....
17
mj sameri

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
21

受け入れられた答えは、述べられているように質問に答えるのに良い仕事をします。

ただし、DataFrameを配列に変換する唯一の理由がそれをフィルター処理することである場合は、DataFrameオブジェクトを直接フィルター処理するために使用できるメソッドを検討する価値があります。いくつかの例については、 https://dataframesjl.readthedocs.io/en/latest/subsets.html および https://dataframesjl.readthedocs.io/en/latest/split_apply_combineを参照してください.html

(これが回答よりコメントに適している場合は事前に申し訳ありません。まだここでコメントするには十分な評判がありません。)

8
Julian Wolf

convertメソッドの更新、現在はconvert(::Type{Array}, df::AbstractDataFrame)が非推奨になりました:

_using DataFrames
convert(Matrix, df)
_

これはMatrix(df)と同等です

これはJulia 0.7以降では機能しません。代わりに、Matrix(df)を試して、チュートリアル here を確認してください。

1
Tyler R.