从 JSON 数据中获取信息并存储到 CSV 文件中
Posted
技术标签:
【中文标题】从 JSON 数据中获取信息并存储到 CSV 文件中【英文标题】:Get info from JSON data and store into CSV file 【发布时间】:2018-05-17 16:53:36 【问题描述】:我能够获取名称、信息和积分(其中的所有数据都作为完整数据进来)。 这是示例输入数据:
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中的键值数据(引用的东西作为列名和值作为行与它们各自):'Name','Info','Points'['Latitude'],'Points'[ 'Longitude'],'Points'['Fields'[这个块内的所有键、值]]
任何帮助将不胜感激。
【问题讨论】:
【参考方案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)
【讨论】:
您的方法是正确的,但数据就像字典列表一样,因此我收到“TypeError:列表索引必须是整数,而不是 str”。需要添加任何修改来解决这个问题吗?以上是关于从 JSON 数据中获取信息并存储到 CSV 文件中的主要内容,如果未能解决你的问题,请参考以下文章
如何通过将 csv 数据存储在变量中来将其访问到 yml 文件中?
如何在 firebase 存储上上传多个文件并将访问 url 和元数据作为 json 或 csv 文件获取? [关闭]