【问题标题】:Expanding a JSON column in Pandas在 Pandas 中扩展 JSON 列
【发布时间】: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()) 分享?

标签: python json excel pandas


【解决方案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 的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 2018-05-25
  • 2014-10-20
  • 2018-09-24
  • 2021-10-09
  • 2020-03-30
相关资源
最近更新 更多