2016-05-22 10 views
8

私は次のようにjsonファイルを取得するためにREST APIを使用しています: jsonをpandasデータフレームに読み込む方法は?

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} 

ようになりますどのように適切に(辞書のように見えます)、この単一の列を変換することができますパンダの列?

EDITは

生のJSONデータはこの

{ 
    "items": [ 
    { 
     "access": "all", 
     "count": 200, 
     "time": 2015 
    }, 
    { 
     "access": "all", 
     "count": 14, 
     "time": 2015 
    }, 
    ] 
} 

おかげのように見えます!ここで

+1

DataFrameに変換する前にJSONを辞書にロードするだけです。 –

+0

ありがとう!どうやってやるの? –

+1

サンプルファイルを追加できますか?私は答えを投稿します。 –

答えて

4

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)) 
+0

は私に 'TypeError:Expected StringまたはUnicode ' –

+1

@Nobobie生データを共有できますか? – ayhan

+1

'json'がリストである場合、そのリストの各要素に対して' read_json'を行う必要があります。 'read_json'の入力は' str'でなければなりません。 –

1

まあ、それは私には思われるdictsとリストの任意のバリエーションを含むネスティングにJSONのインポート一方、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"] 

Iこれはうまくいくはずですが、リクエストがJSONをどのように処理するかによって異なります。 jsonオブジェクトが正常に動作しない場合は、それを印刷してください。

+0

ありがとう!私は生のjsonをあなたに提供しました –

関連する問題