如何将Pandas DataFrame转换为自定义JSON格式?
问题与解决方案
问题描述
我的DataFrame如下:
import pandas as pd df = pd.DataFrame( { 'a': ['x', 'x', 'y', 'y'], 'b': ['xs', 'sx', 'rrx', 'ywer'], 'c': ['aaa', 'bbb', 'rrsdrx', 'yz'], } )
我期望得到如下JSON输出:
{ "x": { "links": [ { "b": "xs", "c": "aaa" }, { "b": "sx", "c": "bbb" } ] }, "y": { "links": [ { "b": "rrx", "c": "rrsdrx" }, { "b": "ywer", "c": "yz" } ] } }
我尝试过以下代码,但输出不符合需求:
import json x = df.groupby('a')['b'].apply(list).reset_index() y = x.to_json(orient='records') parsed = json.loads(y) z = json.dumps(parsed, indent=4)
解决方案
可以通过分组后组装目标结构的方式实现,代码如下:
import pandas as pd import json df = pd.DataFrame( { 'a': ['x', 'x', 'y', 'y'], 'b': ['xs', 'sx', 'rrx', 'ywer'], 'c': ['aaa', 'bbb', 'rrsdrx', 'yz'], } ) # 按a列分组,将每组的b、c转为字典列表并包装在links字段下 result = df.groupby('a').apply( lambda group: {'links': group[['b', 'c']].to_dict('records')} ).to_dict() # 生成格式化的JSON字符串 json_result = json.dumps(result, indent=4) print(json_result)
关键步骤说明
- 分组处理:用
groupby('a')按a列的值拆分数据; - 组装子结构:对每个分组,提取
b和c列,通过to_dict('records')将每行数据转为一个字典,得到字典列表后包装成{'links': 列表}的结构; - 转嵌套字典:用
to_dict()将分组结果转为目标格式的嵌套字典; - JSON格式化:最后用
json.dumps添加缩进,输出符合要求的JSON字符串。
内容的提问来源于stack exchange,提问作者AmirX
相关产品推荐
相关产品推荐

