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

读取JSON文件到pandas DataFrame报Mixing dicts with non-Series错误求助

报错原因

你遇到的报错是因为该JSON为嵌套结构,外层包含terms、license、last_updated等非数组类型的元数据字段,而实际的业务数据存储在results字段对应的数组中。直接调用pd.read_json会将结构不同的字段混合解析,触发排序歧义的错误。

解决方案

常规读取(适合中小型文件)

先将JSON全量加载为Python字典,仅提取results数组解析为DataFrame即可,若需要自动展开嵌套字典可以使用pd.json_normalize:

import pandas as pd
import json

with open("data.json", "r", encoding="utf-8") as f:
    raw_data = json.load(f)

# 基础读取,嵌套字段会保留为字典格式
df = pd.DataFrame(raw_data["results"])

# 进阶:自动展开所有嵌套字典,嵌套字段会用.拼接命名,比如primarysource.qualification
df_normalized = pd.json_normalize(raw_data["results"])

如果需要进一步展开reaction、drug这类嵌套列表,可指定record_path参数:

# 示例:将每个上报记录中的drug列表展开为单独行,同时保留上报id等基础信息
df_drug = pd.json_normalize(
    raw_data["results"],
    record_path=["patient", "drug"],
    meta=["safetyreportid", "receivedate", ["patient", "patientonsetage"]],
    errors="ignore"
)

大文件流式读取(适合GB级大型JSON,避免内存溢出)

如果文件过大全量加载会导致内存不足,可使用ijson库流式迭代读取results字段的每一条数据,分批处理:

  1. 首先安装依赖:
    pip install ijson
  2. 流式读取代码示例:
import pandas as pd
import ijson

batch_size = 10000
result_buffer = []
# 首次写入文件先写表头
write_header = True

with open("data.json", "rb") as f:
    # 迭代读取results数组下的每一条记录
    for record in ijson.items(f, "results.item"):
        result_buffer.append(record)
        # 凑够批次大小就写入文件释放内存
        if len(result_buffer) >= batch_size:
            batch_df = pd.json_normalize(result_buffer)
            batch_df.to_csv("fda_data.csv", mode="a", header=write_header, index=False, encoding="utf-8-sig")
            result_buffer = []
            write_header = False
# 处理最后不足批次大小的剩余数据
if result_buffer:
    batch_df = pd.json_normalize(result_buffer)
    batch_df.to_csv("fda_data.csv", mode="a", header=write_header, index=False, encoding="utf-8-sig")
注意事项
  • 如果你的JSON结构中results字段还有上层嵌套,按需调整ijson的读取路径即可,比如上层有data包裹就改为data.results.item
  • 不需要展开嵌套字段时,将pd.json_normalize替换为pd.DataFrame即可
  • 若后续需要处理列表类型字段,可单独对对应列使用explode方法展开

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 00:36:06