You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python Pandas将DataFrame转换为指定嵌套格式的JSON文件并正确获取列数据

解决Pandas DataFrame转嵌套JSON的问题

我明白你现在的困扰——想要把包含品牌、车型和价格的DataFrame转成指定的嵌套JSON结构,但目前只能提取到价格列。其实你的分组聚合步骤已经做对了,只差最后一步把多级索引的结果转换成嵌套字典!

问题分析

你当前的代码执行后得到的是一个多级索引(MultiIndex)的Series,它的结构是(name, carmodel)作为索引,对应price值。直接导出的话没法自动变成你要的嵌套JSON,需要先把这个结构转换成嵌套字典。

完整解决方案代码

import pandas as pd
import json

# 读取CSV并处理价格数据类型
df = pd.read_csv(r'D:\vucar\scraper\result.csv', dtype='unicode')
df['price'] = pd.to_numeric(df['price'], downcast='float')

# 分组聚合(你的这部分代码没问题)
cars = df[['name','carmodel','price']].sort_values('name').groupby(['name','carmodel']).mean()['price']

# 核心操作:将多级索引Series转为嵌套字典
nested_car_dict = cars.unstack().to_dict('index')

# 可选:如果存在缺失值(比如某个品牌下部分车型没有数据),可以填充0或删除
# nested_car_dict = cars.unstack().fillna(0).to_dict('index')

# 输出查看结构是否符合预期
print(nested_car_dict)

# 写入JSON文件
with open('car_prices.json', 'w', encoding='utf-8') as f:
    json.dump(nested_car_dict, f, indent=4, ensure_ascii=False)

关键步骤解释

  1. unstack():把MultiIndex的第二层(carmodel)从索引转为列,这样每个品牌(name)对应一行,列名是车型,值是价格。
  2. to_dict('index'):将处理后的DataFrame转换为嵌套字典,外层键是品牌名,内层字典的键是车型,值是对应的平均价格,完美匹配你想要的JSON结构。

这样运行后,生成的JSON文件就会和你期望的嵌套结构完全一致啦!

内容的提问来源于stack exchange,提问作者pepongcute266

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 02:02:37