web-dev-qa-db-ja.com

jsonをpandasデータフレームにロードする方法?

次のように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
    },
  ]
}

ありがとう!

10

pd.read_json(json_str)

Pandas documentation です。

EDIT:

Json strのリストについては、次のこともできます。

import json
import pandas as pd

df = pd.DataFrame.from_records(map(json.loads, json_lst))
7
Lifu Huang

まあ、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オブジェクトが機能しない場合は、印刷してください。

1
jonathf