在 Pandas 中扩展 JSON 列
Posted
技术标签:
【中文标题】在 Pandas 中扩展 JSON 列【英文标题】:Expanding a JSON column in Pandas 【发布时间】:2021-02-12 18:23:12 【问题描述】:我有一个 Excel 表,其中有一列包含类似于下面的 JSON 对象(总是至少有一个项目)。有没有办法用 Pandas 扩展这个专栏?有一个 explode 函数 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.explode.html 似乎可以完成工作(结构方面),但它没有对 JSON 进行特殊处理。
[
"id":1234,
"title":"SSL Certificate - Signature Verification Failed Vulnerability",
"rating":"medium",
"status":"Active"
,
"id":5698,
"title":"SSL Certificate - Subject Common Name Does Not Match Server FQDN",
"rating":"low",
"status":"Active"
]
我还尝试了一个 for 循环来实现这一点,这很好,直到我找不到将标准化 JSON 输出连接到“当前行”的方法:
for index, row in filtered.iterrows():
findings = row["MyJSON_COLUMN"]
pd.json_normalize(findings)
【问题讨论】:
pd.json_normalize(filtered["MyJSON_COLUMN"])
工作怎么样?
@jezrael 你是什么意思?我在这个循环中展开每一列并附加数据框?
是的,如果可能的话,很难知道所有数据看起来,是否可以通过print (df.head().to_dict())
分享?
【参考方案1】:
您实际上应该使用read_json
而不是json_normalize
。请按照以下方式进行。把你所有的字符串,保存为一个json文件
"id":1234,"title":"SSL Certificate - Signature Verification Failed Vulnerability","rating":"medium","status":"Active"
"id":5692,"title":"SSL Certificate - Subject Common Name Does Not Match Server FQDN","rating":"low","status":"Active"
每行的一个字符串。我将它保存为 testingread.json,然后运行它
pd.read_json(r"..../testingread.json", lines=True)
注意lines = true
。
【讨论】:
JSON 内容是 Excel 工作表中的一列,它描述了父记录中的发现。我试图在复制父记录时扩展这些发现。这就是我改用 json_normalize 的原因。以上是关于在 Pandas 中扩展 JSON 列的主要内容,如果未能解决你的问题,请参考以下文章
Pandas - 在数据框中的列内扩展嵌套的 json 数组
.json 扩展文件 + 时间戳 + Pandas + Python