2017-11-11 5 views
0

ウェブサイトからデータを分析しようとしています。 json.loads()を使用してjsonデータを取得するためにHTMLを解析しました。json.loads()のデータをPythonで解析する

​​3210

は、だから今、私は次のようなどのデータが残っています:

data = """ 
{'aggregateRating': {'reviewCount': 1691, 
        '@type'  : 'AggregateRating', 
        'ratingValue': 4.0}, 
'review': [{'reviewRating' : {'ratingValue': 5}, 
       'datePublished': '2017-10-31', 
       'description' : "I had a chance to see the Lakers ...", 
       'author'  : 'Andre W.'}] 
} 
"""" 

私は「レビュー」配列でreviewRatingから「ratingValue」整数を返すに興味を持っています。私はこのスクリプトを実行すると:

pd.DataFrame(data['review'], columns = ['reviewRating']) 

を私はこれを取得:

reviewRating 
0 {'ratingValue': 5} 

代わりに、私はの形式でデータを取得するために探しています:

ratingValue 
0 5 

私は、様々な試みられてきました

pd.DataFrame(data['review'], columns = ['reviewRating']['ratingValue']) 
pd.DataFrame(data['review'], columns = ['reviewRating'][['ratingValue']]) 
pd.DataFrame(data['review']['reviewRating'], columns = ['ratingValue']) 

などですが、確かに私はデータの下敷き構造、またはパンダを理解していません。

このように、{'ratingValue':5}を文字列として扱い、問題の整数を残すほうがよいでしょう。また、整数値が 'ratingValue'のDataFrameを簡単に作成できます。 '?

ありがとうございました。

+0

をあなたが 'データならば、それはのように見える作っているが'は' json'文字列でしたが、これはおそらく辞書です。 –

答えて

0

json_normalizepandas.io.jsonから使用する場合は、jsonから直接データフレームを作成できます。

あなたのサンプルデータを使用して、Iを出力することができました:

>>> frame = json_normalize(data) 

    author datePublished       description \ 
0 Andre W. 2017-10-31 I had a chance to see the Lakers ... 

    reviewRating.ratingValue 
0       5 

そして、あなたが使用して評価値にアクセスすることができます。

frame.at[0, 'reviewRating.ratingValue'] # which should give you 5

関連する問題