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

如何使用Pandas将嵌套JSON转为CSV并展开CVE_Items列

解决NVD JSON转CSV时展开CVE_Items列的问题

嘿,我懂你现在的困扰——直接用pd.read_json读取NVD的CVE JSON文件后,CVE_Items列还是嵌套的JSON结构,没法在CSV里看到里面的详细字段对吧?这是因为NVD的JSON是多层嵌套结构,最外层的CVE_Items是包含多个对象的数组,默认的read_json只会解析最外层键为列,内层嵌套结构会被保留成Python对象。

下面是具体的解决步骤,直接就能用:

方法一:直接解析并展开CVE_Items

先读取整个JSON数据,再用json_normalize展开嵌套的CVE_Items数组:

import pandas as pd
from pandas import json_normalize

# 读取JSON文件
with open('nvdcve-1.0-modified.json', 'r') as f:
    nvd_json = pd.read_json(f)

# 提取CVE_Items数组并展开所有嵌套字段
expanded_df = json_normalize(nvd_json['CVE_Items'])

# 保存为CSV(去掉index避免生成多余索引列)
expanded_df.to_csv("test.csv", index=False)

方法二:基于你已有的代码修改

如果已经运行过初始读取代码,也可以在原DataFrame基础上展开CVE_Items:

import pandas as pd
from pandas import json_normalize

# 你的原有代码
df = pd.read_json('nvdcve-1.0-modified.json')

# 展开CVE_Items列
cve_items_expanded = json_normalize(df['CVE_Items'].tolist())

# 合并原DataFrame的其他字段(如CVE_data_timestamp、CVE_data_numberOfCVEs等)和展开后的字段
final_df = pd.concat([df.drop('CVE_Items', axis=1), cve_items_expanded], axis=1)

# 保存结果
final_df.to_csv("test.csv", index=False)

小提示

  • 展开后的列名会用.表示嵌套层级,比如cve.data_type、cve.description.description_data,能清晰体现字段的原始嵌套关系。
  • 如果只需要特定嵌套字段,可以在json_normalize里指定record_path和meta参数筛选,比如只展开cve和impact下的字段,减少输出CSV的列数,提升处理速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:36:04