从JSON数据获取信息并存储到CSV文件中

时间:2017-12-04 09:02:38

标签: json python-2.7 pandas csv numpy

我能够获得名称,信息和点数(其中的所有数据都以整数数据的形式出现)。 以下是示例输入数据:

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中的键值数据(引用的内容作为列名称,值引用为各自的行):'名称','信息',&#39 ;积分' ['纬度&#39],'点数' ['经度&#39],'点数' ['字段&# 39; [所有关键,这个内部块的值]]

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

为什么不使用json_normalize

将对象扁平化为pandas数据帧非常出色:

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)