如何将Pandas DataFrame转换为指定结构的嵌套JSON数据
Pandas DataFrame转指定嵌套结构JSON解决方案
你不需要使用groupby做复杂分组,直接逐行处理字段映射即可,完整可运行代码如下:
import pandas as pd import json # 构造样例DataFrame,实际使用时替换为你自己的df即可 df = pd.DataFrame([{ "text": "I like the new layout", "date": "2021-08-30T18:15:22Z", "channel": "Snowflake", "sentiment": "predict", "product": "Skills", "segment": "EMEA" }]) # 配置字段分类:顶层直接输出的列、要放入fields数组的列 top_cols = ["text", "date", "channel", "sentiment"] field_cols = ["product", "segment"] # 逐行生成目标结构 output_list = df.apply( lambda row: { **row[top_cols].to_dict(), "fields": [{"field": col, "value": row[col]} for col in field_cols] }, axis=1 ).tolist() # 导出为格式化JSON字符串 json_result = json.dumps(output_list, indent=2, ensure_ascii=False) print(json_result)
运行后输出的结构完全符合你的要求:
[ { "text": "I like the new layout", "date": "2021-08-30T18:15:22Z", "channel": "Snowflake", "sentiment": "predict", "fields": [ { "field": "product", "value": "Skills" }, { "field": "segment", "value": "EMEA" } ] } ]
说明
- 之前方案出问题是因为不需要分组操作,每行本身就是一个独立的输出对象,逐行映射字段即可
- 如果后续要新增放到fields的列,直接往
field_cols列表加列名即可,无需修改核心逻辑
内容的提问来源于stack exchange,提问作者Matthew Skinner
相关产品推荐
相关产品推荐

