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

Python读取JSON文件转DataFrame及DataFrame构造调用报错解决

本地JSON文件转Pandas DataFrame报错修复方案

你遇到的ValueError("DataFrame constructor not properly called!")报错,中文含义为ValueError("DataFrame 构造方法调用方式错误"),核心原因是json.load()读取JSON后返回的数据结构,不符合pandas.DataFrame的入参要求,常见的不兼容场景及对应修复方法如下:


常见触发原因

  • JSON顶层是单个字典(不是字典构成的列表),且字典的value不是等长的可迭代对象
  • JSON顶层是嵌套层级过深的非结构化数据,无法直接展开为二维表格
  • 读取到的JSON内容为空,或者存在格式错误导致json.load()返回了非预期的对象类型(比如None、纯字符串等)

对应修复方案

情况1:JSON顶层为单条记录的字典(如{"name":"a","age":18})

需要把字典套进列表里再传入DataFrame,修改代码如下:

import json
import pandas as pd

def open_file(filename):
  with open(filename, "r") as file:
    file_data = json.load(file)
    # 单条字典套列表后再传入构造函数
    output_df = pd.DataFrame([file_data])
    return output_df

df = open_file("LT.json")

情况2:JSON为嵌套结构,数据存在于子字段中

如果你的JSON存在多层嵌套,比如结构为{"code":200,"data":[{"name":"a"},{"name":"b"}]},需要先提取存储结构化列表的字段:

import json
import pandas as pd

def open_file(filename):
  with open(filename, "r") as file:
    file_data = json.load(file)
    # 提取实际存储列表的字段,示例字段名为data,可根据你的JSON实际结构调整
    data_list = file_data.get("data", [])
    output_df = pd.DataFrame(data_list)
    return output_df

df = open_file("LT.json")

情况3:直接使用Pandas内置的read_json方法

大部分标准结构的JSON可以直接用pandas内置方法读取,省去手动读文件解析的步骤:

import pandas as pd

df = pd.read_json("LT.json")

如果修改后仍然报错,可以在file_list = json.load(file)之后加一行print(type(file_list), file_list),打印解析后的数据类型和内容,明确数据结构后再对应调整入参即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:27:03