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

pd.read_json读取JSON文件无法生成列标题正确的DataFrame

解决CSV转JSON后Pandas读取列标题异常的问题

我来帮你分析下问题所在,以及给出两种可行的解决方案:

问题根源

你生成的JSON结构是一个外层对象,里面包含一个Inspections数组,数组的每个元素是单条记录的字典。当Pandas用pd.read_json()读取这种结构时,会把Inspections当作唯一的列名,而每行的字典就成了该列的单元格内容,这就是你看到的结果。

解决方案1:修改CSV转JSON的代码(推荐)

直接生成数组格式的JSON(而非嵌套在外层对象里),这样Pandas读取时会自动识别字典的键为列标题,值为对应行的数据。修改后的代码如下:

# Import required files
import csv
import json
import pandas as pd
from pandas import DataFrame

# Open file
InspectionsFile = "your_input.csv"  # 记得替换成你的实际CSV路径
with open(InspectionsFile, "r") as f:
    reader = csv.reader(f)
    next(reader)  # 跳过表头
    # 直接生成字典列表,而非嵌套在Inspections键下
    data = []
    for row in reader:
        data.append({
            "ACTIVITY DATE": row[0], 
            "OWNER ID": row[1], 
            "OWNER NAME": row[2], 
            "FACILITY ID": row[3]
        })

# Open a new File and dump JSON format
JsonFile = input('Enter a filename to save in Json format: ')
with open(JsonFile, "w") as f:
    json.dump(data, f, indent=4)
print("A new file has been created with json format for the database")

# 现在读取JSON就能得到预期的DataFrame了
df = pd.read_json(JsonFile)
print(df.head())

解决方案2:针对已生成的JSON文件做读取处理

如果已经有了现有结构的JSON文件,不想重新生成,可以在读取后把Inspections列的字典数据展开成标准DataFrame:

import pandas as pd

JsonFile = "your_existing_json.json"  # 替换成你的JSON路径
# 先读取原始JSON
raw_df = pd.read_json(JsonFile)
# 把Inspections列的字典列表转换成DataFrame
df = pd.DataFrame(raw_df["Inspections"].tolist())
print(df.head())

两种方案都能让你得到列标题正常显示的DataFrame,第一种从源头解决问题,更符合Pandas的读取习惯;第二种适合处理已有的JSON文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:23:08