2017-07-07 5 views
2

APIから来ているJSONをフォローする必要があります(my_jsonなど)。エンティティの配列は、エンティティと呼ばれるキーに格納されます。JSONをパンダにインポートする

{ 
    "action" : "get", 
    "application" : "4d97323f-ac0f-11e6-b1d4-0eec2415f3df", 
    "params" : { 
     "limit" : [ "2" ] 
    }, 
    "path" : "/businesses", 
    "entities" : [ 
     { 
      "uuid" : "508d56f1-636b-11e7-9928-122e0737977d", 
      "type" : "business", 
      "size" : 730 }, 
     { 
      "uuid" : "2f3bd4dc-636b-11e7-b937-0ad881f403bf", 
      "type" : "business", 
      "size" : 730 
     } ], 
    "timestamp" : 1499469891059, 
    "duration" : 244, 
    "count" : 2 
} 

私は次のようにデータフレームにロードしようとしています:

import pandas as pd 

pd.read_json(my_json['entities'], orient='split') 

私は次のエラーを取得:

ValueError: Invalid file path or buffer object type: <type 'list'> 

私はレコードの向きを試したが、まだ動作しません。

+0

を行うことができますが、 'あなたの質問にmy_json'のコンテンツを追加してくださいことはできますか? – Infinity

答えて

0

my_json['entities']の使用方法は、Python dictのようになります。

pandas documentationによると、read_jsonは「有効なJSON文字列またはファイル形式」を取り入れています。以下でのJSON strinrgにdictを変換することができますか:あなたはそれがorient="split"の書式戦略に適合していない説明してきたように、キー"entities"

import json 
json_str = json.dumps(my_json["entities"]) 

データ。あなたがorient="list"を使用する必要がありますように見えます:

import pandas as pd 

my_json = """{ 
    "entities": [ 
      { 
       "type": "business", 
       "uuid": "199bca3e-baf6-11e6-861b-0ad881f403bf", 
       "size": 918 
      }, 
      { 
       "type": "business", 
       "uuid": "054a7650-b36a-11e6-a734-122e0737977d", 
       "size": 984 
      } 
     ] 
}""" 

print pd.read_json(my_json, orient='list') 

           entity 
0 {u'type': u'business', u'uuid': u'199bca3e-baf... 
1 {u'type': u'business', u'uuid': u'054a7650-b36... 

または

import pandas as pd 

my_json = """[ 
    { 
     "type": "business", 
     "uuid": "199bca3e-baf6-11e6-861b-0ad881f403bf", 
     "size": 918 
    }, 
    { 
     "type": "business", 
     "uuid": "054a7650-b36a-11e6-a734-122e0737977d", 
     "size": 984 
    } 
]""" 

print pd.read_json(my_json, orient='list') 

は降伏:

size  type         uuid 
0 918 business 199bca3e-baf6-11e6-861b-0ad881f403bf 
1 984 business 054a7650-b36a-11e6-a734-122e0737977d 
0

danielcorinは正しい方向に私を指摘しました。私はやらなければならなくなった:

pd.read_json(json.dumps(b_j['entities']) , orient='list') 

read_jsonメソッドは文字列を取りますので、エンティティコレクションをダンプして使用します。私は疑うよう

2

my_jsonの場合は辞書である、あなたはpd.read_jsonをスキップしてちょうど

pd.DataFrame(my_json['entities']) 

    size  type         uuid 
0 730 business 508d56f1-636b-11e7-9928-122e0737977d 
1 730 business 2f3bd4dc-636b-11e7-b937-0ad881f403bf 
関連する問題