如何用json_normalize()导出含双层索引的JSON数据至CSV
保留双层索引的JSON转CSV实现方案
要同时保留index_line和index_tokens两层索引,需利用pd.json_normalize()的record_path与meta参数配合:
record_path指定需要展开的最内层嵌套列表(此处为tokens)meta指定需要保留的上层关联字段(此处为index_line)
完整实现代码
import pandas as pd data = [{ "line": [ { "index_line": 0, "tokens": [ { "index_tokens": 1, "person": "A", "age": "23", "sex": "M", "add": "" }, { "index_tokens": 2, "person": "B", "age": "22", "sex": "F", "add": "" } ] }, { "index_line": 2, "tokens": [ { "index_tokens": 1, "person": "C", "age": "23", "sex": "F", "add": "" }, { "index_tokens": 2, "person": "D", "age": "21", "sex": "F", "add": "" } ] } ] }] # 处理数据,同时保留两层索引 pd_data = pd.json_normalize( data, record_path=["line", "tokens"], # 展开tokens列表 meta=[["line", "index_line"]] # 保留上层的index_line ) # 重命名列名,优化可读性 pd_data.rename(columns={"line.index_line": "index_line"}, inplace=True) # 查看处理结果 print(pd_data) # 导出为CSV文件 pd_data.to_csv("output.csv", index=False)
处理后的数据结构
输出的DataFrame及CSV内容如下:
| index_line | index_tokens | person | age | sex | add |
|---|---|---|---|---|---|
| 0 | 1 | A | 23 | M | |
| 0 | 2 | B | 22 | F | |
| 2 | 1 | C | 23 | F | |
| 2 | 2 | D | 21 | F |
内容的提问来源于stack exchange,提问作者jonson
相关产品推荐
相关产品推荐

