问题标签 [json-normalize]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1329 浏览

python - 如何使用 json_normalize 规范化嵌套的 json

我正在尝试从嵌套的 json 中创建一个 pandas 数据框。由于某种原因,我似乎无法解决第三级问题。

我的 json 看起来像这样:

等等。

在“文档”部分中是所有实际结果,以“id”开头。一旦所有信息都在那里,下一个以“id”开头的块就紧随其后。

现在我正在尝试为每个单独的块(在本例中为实际项目)创建一个带有键 id、标签和标题(开始)的表。

在定义了 search_url(我从中获取 json)之后,我的代码目前如下所示:

有了这个,我被告知他们 dict_keys 如下:

鉴于上面的 json,我知道我想查看“结果”,然后进一步查看“文档”。根据我找到的文档,我应该能够通过直接寻址结果部分然后通过用“。”分隔字段来寻址嵌套位来实现这一点。我现在尝试了以下代码:

这一直有效,直到 df[field] - 在这个阶段程序告诉我:

不过,它确实适用于上述级别,所以如果我尝试对“名称”和“文档”进行相同操作,我会得到一个可爱的数据框。我究竟做错了什么?我仍然是 python 和 pandas 的初学者,非常感谢任何帮助!

编辑:

所需的数据帧输出大致如下所示:

0 投票
0 回答
137 浏览

pandas - 使用 python 解析和展平从 twitter API 检索的 JSON

我一直在为学术目的收集历史 Twitter 数据,我的最终目标是在 Postgres 中结构化和组织数据。但是,我在从 API 展平杂乱的嵌套数据时遇到了一些问题。

我从每个 API 请求中获得了一堆 JSONL 文件,并且我一直在尝试在 Jupyter Notebook 上使用 python 中的数据框处理这些数据。

每个文件都包含嵌套的 JSON 文件:

输出: 数据框

然后,我使用 JSON normalize 来解压缩嵌套的“数据”部分:

这给了我这个输出:数据框

但是,还有其他嵌套列我想展平,但我一直面临问题。当我应用相同的规范化函数时,我得到“TypeError:字符串索引必须是整数”。

我对 python 很陌生,我想了解正在发生的事情以及解决此问题的可能性。另一层复杂性是其余嵌套列具有重复的记录,例如:

总之,我现在的目标是展平包含这些数据的列并创建诸如“normalized_text”之类的列,其中我将有一个列列出 Lisboa, Av. de Brasília 和 Algés-Alcântara。

如果需要额外的信息,请告诉我,这是我在 stackoverflow 中的第一篇文章!

0 投票
1 回答
666 浏览

python - 使用 Pandas 进行嵌套 JSON 标准化,KeyError:“尝试使用错误运行='ignore',因为键 'company' 并不总是存在”

我正在尝试规范化从 GraphQL API 获取的 JSON 并使用 json_normalize JSON 将其转换为数据帧

这是我正在尝试的使用熊猫的 json_normalize

如果元内部大小为 2 则没有错误,

例如:- meta= [["node", "organization"], ["node", "name"], ["node", "ip"], ["node", "id"], ["node" , "设备类"]]

但是当我在列表中尝试超过 2 个时,我得到了以下错误。

例如:meta= [["node", "organization", "company"], ["node", "name"],["node", "id"], ["node", "deviceClass"]]

** KeyError: 'company' 上述异常是以下异常的直接原因: .... KeyError: "Try running with errors='ignore' as key 'company' is not always present"**

如何在元内添加 3 个以上的字段?

谢谢

0 投票
1 回答
60 浏览

python - 嵌套的 JSON 和 Pandas

我有一个如下所示的嵌套 JSON 文件(许多对象中的前 2 个):

我想将其转换为如下所示的数据框:

单元 模型计数 点值 移动 武器技能 弹道技能 力量 韧性 伤口 攻击 领导 节省
掠夺者阿巴顿 1 220\u2022 6" 2+ 2+ 5 5 8 6 10 +2
混沌领主 1 80 6" 2+ 2+ 4 4 5 4 9 +3

我认为解决方案是使用 pandas json_normalize()

但是,当我执行以下操作时,我得到一个 1 行 x 115 列的数据框,其列名如下

有任何想法吗?

0 投票
1 回答
94 浏览

python - 将 pandas 嵌套的 JSON 结构转换为数据框

我有作为嵌套 JSON 的输出。如何采用这种嵌套的 JSON 结构并将其更改为数据框?

我认为有两个主要级别“行情”和“承运人”。我有兴趣让“报价”成为数据框中的行。

编辑1:

我尝试了类似下面的代码,但我不明白如何使用将这些嵌套的 JSON 结构转换为数据帧:

我在这里也发现了一个类似的问题。

0 投票
1 回答
67 浏览

python - 使用 json_normalize 在列表中展平双重嵌套字典

我在列表中有一个嵌套字典,它是另一个嵌套字典的一部分。上面的整个代码片段本身就是 list 的一个元素response

我尝试使用以下方法将其展平:

上面代码的输出是: 在此处输入图像描述

我也期望将字典的内部列表变平。

有谁可以帮我离开这里吗?我需要遍历数据框还是有任何直接可用的方法?

编辑: 预期输出如下 在此处输入图像描述

0 投票
0 回答
101 浏览

python - Pandas json_normalize 然后选择列与创建字典然后应用 json_normalize

我有我正在使用的用例 -

  1. 方法 1:Pandas json_normalize 将字典列表转换为数据框(每个字典循环。),然后选择所需的列。
  2. 方法 2:可以完成的另一种方法是创建所选列/键的字典(通过循环遍历每个字典的主列表的子集),然后应用 json_normalize。

我试图了解在可扩展性方面哪种方法是正确的。提前致谢。

示例来自 -文档

每个循环 777 µs ± 24.7 µs(7 次运行的平均值 ± 标准偏差,每次 1000 个循环)

笔记:

  • 从 API 检索数据
  • DataFrame 所需的列接近 40
0 投票
2 回答
516 浏览

python - 来自 API JSON 响应的 Python Pandas 数据框 >>

我是 Python 新手,我可以在这里寻求专家的帮助吗?

我希望从https://api.cryptowat.ch/markets/summaries JSON 响应构建一个数据框。基于以下过滤条件

  1. Kraken 列出的货币对(请注意,有海妖期货我不想要那些)
  2. 仅与美元配对的货币,即 aaveusd、adausd....

我正在寻找的理想数据框是(不知何故,excel 完美地加载了下面的 json 截图) Dataframe_Excel_Screenshot

resp = requests.get(https://api.cryptowat.ch/markets/summaries) kraken_assets = resp.json() df = pd.json_normalize(kraken_assets) print(df)

输出:

result.binance-us:aaveusd.price.last result.binance-us:aaveusd.price.high ...
0 264.48 267.32 ...

[1 行 x 62688 列]

当我只是将链接粘贴到浏览器 JSON 响应中时使用双引号 ("),但是当我通过 python 代码获取它时。所有双引号 (") 都更改为单引号 (') 知道为什么吗?尽管我尝试使用 json_normalize 解决它,但随后响应更改为 [1 行 x 62688 列]。我不确定如何处理 1 行 62k 列。我不知道如何以我需要的数据框格式提取确切信息(请参阅 excel 屏幕截图)。

任何帮助深表感谢。谢谢你!

0 投票
1 回答
87 浏览

python - csv中的嵌套字典转换为熊猫数据框

我尝试json normalize在嵌套字典中使用,如图A所示,它显示错误string indices must be integers。这是我的代码

0 投票
1 回答
256 浏览

python - 规范化 json 列并与数据框的其余部分连接


这是我在stackoverflow上的第一个问题,所以请不要烤我。我试图在互联网上找到类似的问题,实际上有几个,但对我来说,解决方案不起作用。

我创建了这个数据框:

它看起来像这样:

我希望数据框看起来像这样:

我使用以下代码将 line_items 的类型从 string 更改为 dict:

通常我json_normalize现在会用它来展平 line_items 列。但我也想保留身份证,不知道该怎么做。我也想避免任何循环。

有没有人可以帮助我解决这个问题?

亲切的问候
joant95