2017-12-04 21 views
1

名前、情報、およびポイント(この中にあるすべてのデータがすべてデータとして入力されています)を取得できます。ここでJSONデータから情報を取得し、CSVファイルに保存

data : [[{'Info':'http:\/\/www.epa.gov\/enviro\/geo_data.html', 'Name':'US RCRA Generators (CESQG, SQG, LQG)', 'Color':[ 
240, 180, 120 ], 'Points':[ 
{ 
'Direction':'1.64069406001901', 'Description':'SRID=4326;POINT(-111.74632  33.29791)', 'Fields':[ 
{ 
'Value':'COSTCO #644', 'Key':'Primary Name' }, { 
'Value':'2887 S MARKET ST', 'Key':'Address' }, { 
'Value':'GILBERT', 'Key':'City' }, { 
'Value':'MARICOPA', 'Key':'County' }, { 
'Value':'ONE-HOUR PHOTOFINISHING., OTHER GASOLINE STATIONS.', 'Key':'NAICS  Descriptions' } ], 'Longitude':'-111.74632', 'Latitude':'33.29791',  'Type':'ST_Point' } ]]] 

は、私が試したものです::ここ は、サンプルの入力データである

info_list = [] 
name_list = [] 
points_list = [] 
lat_list = [] 
long_list = [] 
for ff in finalJson: 
    for gg in ff: 
     info = gg['Info'] 
     name = gg['Name'] 
     points = gg['Points'] 
     info_list.append(info) 
     name_list.append(name) 
     points_list.append(points) 

しかし、CSVでのキー値データを取得する必要があります(と行として列名と値として引用されたもの「名前」、「情報」、「ポイント」[「緯度」]、「ポイント」[「経度」]、「ポイント」[「フィールド」[すべてのキー、この内部ブロックの値]]

ご協力いただければ幸いです。

答えて

1

なぜ使用しないのですかjson_normalize

それはパンダのデータフレームにオブジェクトを平坦化するのはかなり良い仕事をしていません:

from pandas.io.json import json_normalize 
df = json_normalize(json_data['data']) 
print(df.head()) 

その後、クリーン/再構築データフレーム、to_csvを使用してCSVへの最後のエクスポートそれで。

df.to_csv('/path/output.csv', encoding='utf-8') 

編集:複数の列に分割 'ポイント' の列。

df2 = df.groupby('Info').Points.apply(lambda x: pd.DataFrame(x.values[0])).reset_index() 
final_df = pd.concat([df, df2]) 
print(final_df) 
+0

あなたのアプローチは正しいですが、データは辞書のリストのようです。このため、私は 'TypeError:リストインデックスはstrでなく整数でなければなりません。これを解決するために何らかの修正を加える必要がありますか? – Amit

+0

@AmitHombal編集された回答を確認してください。 –

関連する問題