JSONをdeedleデータフレームの列に展開する

sebhofer

ウェブサイトから取得したJSONをdeedleデータフレームに変換し、JSONエントリをデータフレームの個別の列に展開しようとしています。私はこの議論を見つけましたが、提案された解決策を私のために機能させることができません。JSONとdeedleの両方に慣れていないので、ばかげた間違いをしている可能性があります。私は以下を試しています(主に引用された議論からコピーされました):

let rec expander key value =
    seq {
        match value with
        | JsonValue.String  (s) -> yield key,typeof<string>,box s
        | JsonValue.Boolean (b) -> yield key,typeof<bool>,box b
        | JsonValue.Float   (f) -> yield key,typeof<float>,box f
        | JsonValue.Null    (_) -> yield key,typeof<obj>,box ()
        | JsonValue.Number  (n) -> yield key,typeof<decimal>,box n
        | JsonValue.Record  (r) -> yield! r |> Seq.collect ((<||)expander)
        | JsonValue.Array   (a) ->
            yield! a
            |> Seq.collect (expander "arrayItem")
    }

Frame.CustomExpanders.Add(typeof<JsonDocument>,
                          fun o -> (o :?> JsonDocument).JsonValue |> expander "root")

Frame.CustomExpanders.Add(typeof<JsonValue>,
                          fun o -> o :?> JsonValue |> expander "root")

let info =
    JsonValue.Parse(""" { "name": "Tomas", "born": 1985 } """)

let df =
    [ series ["It" => info] ]
    |> Frame.ofRowsOrdinal

let dfexpanded = Frame.expandAllCols 2 df

これは私に解釈の仕方がわからない何かを与えますが、望ましい結果ではありません:

It.properties                                         It.Tag It.IsString It.IsNumber It.IsFloat It.IsRecord It.IsArray It.IsBoolean It.IsNull It._Print                             
0 -> System.Tuple`2[System.String,FSharp.Data.JsonValue][] 3      False       False       False      True        False      False        False     { "name": "Tomas", "born": 1985 } 

私はどんな入力にも感謝しています!

トマーシュ・ペトリッチ

問題はIt、データフレーム内の型がではなくJsonValue、識別された共用体の個々のケースを表すためにコンパイラによって生成されたサブクラスの1つであるようJsonValue+Recordです。この特定のケースでは、という名前のネストされた型です。

Deedleは完全に一致する型を探します(そして基本クラスのエクスパンダーを見つけようとはしません)ので、回避策はネストされたクラスごとにエクスパンダーを登録することです。

for t in typeof<JsonValue>.GetNestedTypes() do
  Frame.CustomExpanders.Add(t, fun o -> o :?> JsonValue |> expander "root")

これを実行した後、コードは期待される結果をもたらします。

val dfexpanded : Frame<int,string> =

     It.name It.born 
0 -> Tomas   1985    

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JSONをdeedleデータフレームの列に展開する

分類Dev

列の値を(ペアごとに)展開してRのデータフレームを展開する方法

分類Dev

列の値に基づいてデータフレームを展開する

分類Dev

Rデータフレーム列行列をデータフレーム列に展開する方法

分類Dev

パンダは列のjsonを解析し、データフレームの新しい行に展開します

分類Dev

データフレームの各行を展開する

分類Dev

分類群の注釈をデータフレームの個別の列に展開する方法

分類Dev

別のデータフレームに基づいてデータフレームに行を展開し、列を追加する

分類Dev

データフレーム列を多数に展開

分類Dev

別のデータフレームを介してデータフレームの行を展開する

分類Dev

別のデータフレームを介してデータフレームの行を展開する

分類Dev

Rのデータフレームを展開する連続した値を持つ列を追加する方法

分類Dev

列の値でデータフレームを展開します

分類Dev

Pandasデータフレームの2つの列をリストのリストに展開します

分類Dev

複数の列と行の基準に基づいてRデータフレームを展開します

分類Dev

Deedleのデフォルト値でデータフレームに列を追加します

分類Dev

日時が介在するデータフレーム日時列の行を展開します

分類Dev

pandasgroupbyの結果を初期データフレームに展開します

分類Dev

R:データの行をシフトしてデータフレームを列方向に展開

分類Dev

Rのデータフレームの列に基づいてデータフレームを展開します

分類Dev

パンダのデータフレームを「展開」するにはどうすればよいですか?

分類Dev

データフレームを展開

分類Dev

あるデータフレームから別のデータフレームパンダにリストを展開する

分類Dev

pandasデータフレームの時系列データを展開します

分類Dev

他の列の値を繰り返さずにパンダデータフレームのリストを展開する方法

分類Dev

データフレームの列要素は配列ですが、どのように展開しますか?

分類Dev

データフレームを展開する-列ではなく行を追加する

分類Dev

イテラブルのディクショナリをデータフレームに展開/展開

分類Dev

Pandasデータフレームを展開してマージする

Related 関連記事

  1. 1

    JSONをdeedleデータフレームの列に展開する

  2. 2

    列の値を(ペアごとに)展開してRのデータフレームを展開する方法

  3. 3

    列の値に基づいてデータフレームを展開する

  4. 4

    Rデータフレーム列行列をデータフレーム列に展開する方法

  5. 5

    パンダは列のjsonを解析し、データフレームの新しい行に展開します

  6. 6

    データフレームの各行を展開する

  7. 7

    分類群の注釈をデータフレームの個別の列に展開する方法

  8. 8

    別のデータフレームに基づいてデータフレームに行を展開し、列を追加する

  9. 9

    データフレーム列を多数に展開

  10. 10

    別のデータフレームを介してデータフレームの行を展開する

  11. 11

    別のデータフレームを介してデータフレームの行を展開する

  12. 12

    Rのデータフレームを展開する連続した値を持つ列を追加する方法

  13. 13

    列の値でデータフレームを展開します

  14. 14

    Pandasデータフレームの2つの列をリストのリストに展開します

  15. 15

    複数の列と行の基準に基づいてRデータフレームを展開します

  16. 16

    Deedleのデフォルト値でデータフレームに列を追加します

  17. 17

    日時が介在するデータフレーム日時列の行を展開します

  18. 18

    pandasgroupbyの結果を初期データフレームに展開します

  19. 19

    R:データの行をシフトしてデータフレームを列方向に展開

  20. 20

    Rのデータフレームの列に基づいてデータフレームを展開します

  21. 21

    パンダのデータフレームを「展開」するにはどうすればよいですか?

  22. 22

    データフレームを展開

  23. 23

    あるデータフレームから別のデータフレームパンダにリストを展開する

  24. 24

    pandasデータフレームの時系列データを展開します

  25. 25

    他の列の値を繰り返さずにパンダデータフレームのリストを展開する方法

  26. 26

    データフレームの列要素は配列ですが、どのように展開しますか?

  27. 27

    データフレームを展開する-列ではなく行を追加する

  28. 28

    イテラブルのディクショナリをデータフレームに展開/展開

  29. 29

    Pandasデータフレームを展開してマージする

ホットタグ

アーカイブ