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

如何将嵌套JSON股票数据转CSV?解决Pandas两类报错问题

解决嵌套JSON转CSV的报错问题

我来帮你搞定这个嵌套JSON转CSV的问题,先分析下你遇到的两个报错原因,再给出两种简洁的解决方案:

报错原因解析

  1. ValueError: If using all scalar values, you must pass an index
    你直接用pd.read_json('data.json')读取后,得到的是一个只有1列(Global Quote)的DataFrame,而这一列的单元格值是完整的嵌套字典(属于标量值)。当你调用to_csv时,Pandas无法直接将这种嵌套结构拆分成CSV的列,所以抛出这个错误。

  2. TypeError: string indices must be integers
    这个错误应该是你手动处理时的操作失误——比如你可能没有用json.load()正确解析JSON文件,直接把文件读取的字符串当成字典去索引(比如f.read()['Global Quote']),字符串只能用整数索引位置,自然会报错。

最优解决方案

方法一:先解析提取嵌套字典,再转DataFrame

这是最直观的方式,延续你已经做的提取步骤,只要正确转换为DataFrame即可:

import json
import pandas as pd

# 读取并解析JSON文件
with open('data.json', 'r') as f:
    meta = json.load(f)

# 提取嵌套的核心数据字典
data_dict = meta['Global Quote']

# 将单个字典转为DataFrame(注意要把字典放进列表中,确保Pandas识别为一行数据)
df = pd.DataFrame([data_dict])

# 保存为CSV,设置index=False避免生成额外的索引列
df.to_csv('datatest.csv', encoding='utf-8-sig', index=False)

方法二:用Pandas的json_normalize直接处理嵌套JSON

json_normalize是Pandas专门为嵌套JSON设计的工具,适合各种复杂嵌套结构,这里用它更简洁:

import pandas as pd

# 先读取JSON为Series(typ='series'会把顶层JSON转为Series,值就是嵌套字典)
json_series = pd.read_json('data.json', typ='series')

# 用json_normalize展开嵌套字典为平级DataFrame
df = pd.json_normalize(json_series)

# 保存CSV
df.to_csv('datatest.csv', encoding='utf-8-sig', index=False)

两种方法最终都会生成符合预期的CSV,列就是01. symbol、02. open这些字段,行就是对应的股票数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:17:38