如何使用Python将嵌套字典转换为DataFrame/CSV
Python实现嵌套字典转DataFrame/CSV
核心逻辑和你使用的在线JSON转CSV工具对齐,自动打平嵌套结构,无需手动逐字段提取。
- 依赖准备:先安装pandas库,执行命令
pip install pandas
完整实现代码
import pandas as pd # 待转换的原始嵌套字典 data = { "message": { "id": 474735, "token": "GI797jMv8FuG", "direction": "outgoing", "message_id": "t", "to": "user@email.com", "from": "user@email.com", "subject": "Test Message at July 05, 2022 16:10", "timestamp": 1657017652.063772, "spam_status": "NotChecked", "tag": None }, "status": "Sent", "details": "Message for accepted by aspmx.l.google.com (142.251.12.26) (from 49.248.200.108)", "output": "250 2.0.0 OK 1657017654 f1-20020a63de01000000b0040d4ea0274fsi11524255pgg.697 - gsmtp\n", "sent_with_ssl": False, "timestamp": 1657017654.6172404, "time": 1.26 } # 自动打平嵌套结构生成DataFrame df = pd.json_normalize(data) # 控制台预览转换结果 print(df) # 导出为CSV文件,index=False去除默认行号列,utf-8-sig编码兼容Excel中文显示 df.to_csv("message_export.csv", index=False, encoding="utf-8-sig")
注意事项
pd.json_normalize会自动递归展开所有层级的嵌套字典,嵌套字段默认以.拼接父键和子键作为列名,比如原message下的id字段对应列名为message.id,外层同名字段timestamp和嵌套的message.timestamp不会产生冲突,输出结构和在线转换工具完全一致。- 如果需要调整嵌套字段的列名分隔符,可以给
json_normalize传入sep="_"参数,列名就会变成message_id这种下划线分隔的格式。 - 如果是批量处理多条同结构的字典,只需要把多个字典放到列表里传给
pd.json_normalize即可,会自动生成多行的DataFrame。 - 导出CSV时使用utf-8-sig编码是为了避免Windows环境下用Excel打开文件出现乱码,如果不需要兼容Excel中文显示,可以替换为默认的
utf-8编码。
内容的提问来源于stack exchange,提问作者shubham
相关产品推荐
相关产品推荐

