次のようにREST API
を使用してjson
ファイルを取得しています。
import urllib2
import pandas as pd
import numpy as np
import requests
request='myrequest'
data= requests.get(request)
json=data.json()
df=pd.DataFrame(json)
データフレームは次のようになります
items
0 {u'access': u'all', u'count': 501, u'time': 2014}
1 {u'access': u'all', u'count': 381, u'time': 2015}
この1つの列(辞書のように見える)をパンダの適切な列に変換するにはどうすればよいですか?
編集
生のJSONデータは次のようになります
{
"items": [
{
"access": "all",
"count": 200,
"time": 2015
},
{
"access": "all",
"count": 14,
"time": 2015
},
]
}
ありがとう!
pd.read_json(json_str)
EDIT:
Json strのリストについては、次のこともできます。
import json
import pandas as pd
df = pd.DataFrame.from_records(map(json.loads, json_lst))
まあ、JSONはdictsとlistのバリエーションを含むネストにインポートしますが、Pandasは反復可能な要素を含む単一のdictコレクションを必要とします。したがって、それらは一致しません。
JSONの構造を正しく解釈すると(そして、JSON構造ではなく最終製品のみを印刷するので、そうでないかもしれません)、辞書のリストのように見えます。その場合、解決策は次のとおりです。
data = {k:[v] for k,v in json[0].items()}
for jso in json[1:]:
for k,v in jso.items():
data[k].append(v)
df = pd.DataFrame(data)
編集:
値が提供されます。コードを機能させるには、前に次のものが必要です。
json = json["items"]
これは機能するはずですが、リクエストがJSONを処理する方法に依存します。 json
オブジェクトが機能しない場合は、印刷してください。