python - 如何使用 Python 组合来自不同数组的 JSON 对象
问题描述
我正在尝试使用 Python 遍历不同的 JSON 数组,以便将所有对象组合成一个数据结构。JSON 看起来像这样:
data = {
"Wednesday, Apr 3, 2019": [
{
"id": "000",
"keyid": "4273666087",
"name": "Raptor",
"symbol": "RPT",
},
{
"id": "111",
"keyid": "1818114564",
"name": "Duck",
"symbol": "DUK",
}
],
"Tuesday, Apr 2, 2019": [
{
"id": "222",
"keyid": "8032408148",
"name": "Hawk",
"symbol": "HWK",
},
{
"id": "333",
"keyid": "0362766431",
"name": "Goose",
"symbol": "GOO",
}
]
}
因为它看起来像一本字典,所以我尝试这样做:
for item in data.values():
print(item)
print("\n")
它将每个数组的对象组合成一个单独的列表。但我希望所有对象都属于同一个数据结构,以便最终结果看起来像这样:
id | keyid | name | symbol
-----------------------------------
000 | 4273666087 | Raptor | RPT
-----------------------------------
111 | 1818114564 | Duck | DUK
-----------------------------------
222 | 8032408148 | Hawk | HWK
-----------------------------------
333 | 0362766431 | Goose | GOO
-----------------------------------
这样做的最佳方法是什么?
解决方案
使用pandas
:
import pandas as pd
df = pd.DataFrame([x for k,v in data.items() for x in v])
print(df)
输出:
id keyid name symbol
0 000 4273666087 Raptor RPT
1 111 1818114564 Duck DUK
2 222 8032408148 Hawk HWK
3 333 0362766431 Goose GOO
你可以在常规 Python 中做到这一点,但这会很麻烦,所以我支持使用pandas
which 可以在一行中完成。
正如你想要的嵌套循环:
import pandas as pd
l = []
for k,v in data.items():
for x in v:
l.append(x)
df = pd.DataFrame(l)
print(df)
推荐阅读
- html - 如何使用 Tailwind CSS 创建类似于 Quora 的居中 3 列布局
- reactjs - React-Router v6:你能改变一个目的地
零件? - lucene - 如何使用罗盘 lucene 生成的 cfs 索引?
- javascript - Cognito 从 Pre Sign-up Lambda Trigger 发送什么样的事件
- c++ - 链接器找不到 VirtualAllocFromApp
- qt - Qml / Qt creator:如何多次“生成”/创建自定义组件
- python-3.x - 有没有其他方法可以检查 args[1] 是否存在 + 可以在 days_array 中找到而不是尝试除?
- javascript - 禁止未使用的对象属性
- arrays - 追踪内存泄漏,释放不正确?
- spring-boot - 是否可以从 Maven 多模块项目的父模块中的配置文件夹加载 Spring-Boot 属性?