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

拼接DataFrame与json_normalize结果时遇DataFrame构造调用错误

解决pandas拼接JSON字段时的ValueError问题

嘿,我来帮你搞定这个问题!你遇到的ValueError: DataFrame constructor not properly called!其实是个小问题——你把creation-date这个字符串直接赋值给了df,但pd.concat可不认单纯的字符串,它要的是pandas能处理的DataFrame或者Series才行。

咱们先拆解下你的代码问题:

  • 首先,你用record_path=['os-details']不太对,因为os-details是单个字典,不是数组列表,record_path本来是用来处理数组型嵌套字段的,这么写会让生成的DataFrame结构不符合预期。
  • 其次,creation-date是单个时间字符串,得把它转换成pandas的Series(或者单列DataFrame),才能和其他数据横向拼接。

下面是修正后的完整代码,我给你标了关键改动:

import pandas as pd
import json
from pandas.io.json import json_normalize

# 读取JSON文件
with open("C:\\Users\\esrilka\\Documents\\jsonFiles\\jsonFiles\\Mynew.json") as fi:
    d = json.load(fi)

# 直接normalize整个system-infos,pandas会自动展开所有嵌套字典(包括os-details、hw-details)
works_data = json_normalize(data=d['system-infos'])

# 把creation-date转成Series,指定列名,这样拼接时就会作为新列加入
creation_date_col = pd.Series([d['creation-date']], name='creation-date')

# 横向拼接两个对象,axis=1代表按列拼接
result = pd.concat([works_data, creation_date_col], axis=1)

# 保存到CSV
result.to_csv("C:\\Users\\esrilka\\Documents\\jsonFiles\\sample.csv", index=False)

如果你就想单独提取os-details的内容,同时保留hostname、domain这些字段,可以用下面的写法,手动指定要提取的嵌套字段和关联的元数据:

import pandas as pd
import json
from pandas.io.json import json_normalize

with open("C:\\Users\\esrilka\\Documents\\jsonFiles\\jsonFiles\\Mynew.json") as fi:
    d = json.load(fi)

# 把os-details包装成数组,让record_path能识别,同时指定要保留的其他字段
works_data = json_normalize(
    data=d['system-infos'],
    record_path=[['os-details']],  # 这里用双层列表确保识别单个字典
    meta=['hostname', 'domain', 'cpu-count', 'cpu-name']
)

creation_date_col = pd.Series([d['creation-date']], name='creation-date')
result = pd.concat([works_data, creation_date_col], axis=1)
result.to_csv("C:\\Users\\esrilka\\Documents\\jsonFiles\\sample.csv", index=False)

这样改完之后,就能顺利完成拼接并导出CSV啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:13:48