如何将含reviews数组的JSON转为指定格式CSV?或用Pandas解决?
用Pandas处理JSON转CSV的解决方案
直接用Pandas的explode和json_normalize就能搞定,以下是完整代码:
import pandas as pd import json from io import StringIO # 你的JSON数据(如果是从本地文件读取,直接用pd.read_json('your_file.json')即可) json_data = '''[{ "serial": "63708940a8d291c502be815f", "reviews": [ { "name": "shadman", "rating": 4, "_id":"6373d4eb50cff661989f3d83" }, { "name": "niloy1", "rating": 3, "_id": "6373d59450cff661989f3db8" } ] }]''' # 读取JSON到DataFrame df = pd.read_json(StringIO(json_data)) # 炸开展开reviews数组,每个review占一行,保留对应的serial值 df_exploded = df.explode('reviews', ignore_index=True) # 把reviews列里的字典展开为单独的列 reviews_df = pd.json_normalize(df_exploded['reviews']) # 合并serial列和展开后的review列 final_df = pd.concat([df_exploded['serial'], reviews_df], axis=1) # 导出为目标格式的CSV final_df.to_csv('output.csv', index=False)
步骤说明:
- 读取JSON:如果是本地JSON文件,直接替换成
pd.read_json('你的文件名.json')即可,这里用字符串示例是为了方便演示。 - 炸开展开数组:
explode('reviews')会把每个reviews对象拆成单独一行,同时保留对应的serial值,ignore_index=True重置行索引避免重复。 - 解析字典列:
pd.json_normalize()把reviews列里的字典转换成独立的列(name、rating、_id)。 - 合并并导出:将serial列和解析后的review列合并,最后导出CSV时用
index=False避免把行索引写入文件。
生成的CSV格式完全符合需求,每行对应一个reviews对象,列名就是你要的serial、name、rating、_id。
内容的提问来源于stack exchange,提问作者Shadman Sakib
相关产品推荐
相关产品推荐

