如何用pandas.json_normalize处理嵌套JSON生成指定CSV?
使用 Pandas 规范化嵌套 JSON 并转换为 CSV
方法一:利用 pd.json_normalize 自动展开嵌套结构
pd.json_normalize 可以自动处理嵌套JSON结构,生成扁平化的DataFrame,之后只需筛选并重命名目标字段即可:
import pandas as pd import json # 1. 读取JSON数据(根据文件格式选择对应方式) # 情况1:JSON文件是包含所有记录的数组 with open('your_data.json', 'r') as f: data = json.load(f) # 情况2:JSON文件每行一条记录(JSON Lines格式) # with open('your_data.json', 'r') as f: # data = [json.loads(line) for line in f] # 2. 规范化JSON,生成扁平化DataFrame df_normalized = pd.json_normalize(data) # 3. 筛选目标字段并重命名 target_mapping = { 'documentReport.documentId': 'documentId', 'documentReport.flowName': 'flowName', 'documentReport.flowStateName': 'flowStateName', 'documentReport.userName': 'userName', 'documentReport.uploadDateUtc': 'uploadDateUtc', 'documentReport.claro.numberSds': 'numberSds' } result_df = df_normalized[target_mapping.keys()].rename(columns=target_mapping) # 4. 导出为CSV result_df.to_csv('output.csv', index=False)
方法二:手动提取字段(直观高效,适合字段明确的场景)
如果JSON层级复杂但需要的字段固定,手动遍历提取目标值可以避免处理规范化后的长列名,逻辑更清晰:
import pandas as pd import json # 1. 读取JSON数据(同方法一) with open('your_data.json', 'r') as f: data = json.load(f) # 2. 遍历每条记录,提取所需字段 extracted_records = [] for record in data: doc_report = record['documentReport'] claro_info = doc_report['claro'] extracted_records.append({ 'documentId': doc_report['documentId'], 'flowName': doc_report['flowName'], 'flowStateName': doc_report['flowStateName'], 'userName': doc_report['userName'], 'uploadDateUtc': doc_report['uploadDateUtc'], 'numberSds': claro_info['numberSds'] }) # 3. 转换为DataFrame并导出CSV result_df = pd.DataFrame(extracted_records) result_df.to_csv('output.csv', index=False)
注意事项
- 确保输入的
data是列表类型(包含所有JSON记录),如果原始JSON是单个对象,需将其放入列表中(如data = [single_record])。 - 若JSON存在缺失字段,可使用
get方法避免报错,例如claro_info.get('numberSds', None)。
内容的提问来源于stack exchange,提问作者Agustin Yaskuloski
相关产品推荐
相关产品推荐

