python - 深度嵌套的 json - Pandas DataFrame 字典中的列表
问题描述
我正在尝试解析嵌套的 json 结果。
data = {
"results": [
{
"components": [
{
"times": {
"periods": [
{
"fromDayOfWeek": 0,
"fromHour": 12,
"fromMinute": 0,
"toDayOfWeek": 4,
"toHour": 21,
"toMinute": 0,
"id": 156589,
"periodId": 20855
}
],
}
}
],
}
],
}
我可以访问并为“结果”和“组件”列表创建数据框,但由于“时间”字典而无法访问“周期”。到目前为止,我有这个:
df = pd.json_normalize(数据,record_path = ['结果','组件'])
需要一个包含列名和值的单独“句点”数据框。非常感谢您对此的帮助。谢谢!
解决方案
- 我的结果
- II 组件
- 第三次
- Ⅲ期
规范化应该是正确的方式:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.json_normalize.html
有 4 级嵌套。结果中可以有 x 个组件,组件中有 y 次 - 但是这种类型的嵌套是过度设计的吗?
获取数据的最简单方法是:
print data['a']['b']['c']['d'] (...)
在你的情况下:
打印数据['results']['components']['times']['periods']
您可以通过这段代码访问特定的嵌套级别:
def GetPropertyFromPeriods (property):
propertyList = []
for x in data['results']['components']['times']:
singleProperty = photoURL['periods'][property]
propertyList.append(singleProperty)
return propertyList
这使您可以访问期间内的一个属性(fromDayOfWeek、fromHour、fromMinute)
转换 json 值后,将其转换为 pandas 数据框:
print pd.DataFrame(data, columns=["columnA", "columnB”])
如果卡住:
如何在 Python 中使用来自 JSON 输出的数据创建表
熊猫文档:
- pandas.DataFrame.from_dict
- pandas.json_normalize
推荐阅读
- javascript - 如何使用 redux 将嵌套对象正确绑定到文本输入中
- python - 使用 BeautifulSoup 从 python 导出到 .csv
- android - @InstallIn 只能用于 @Module 或 @EntryPoint 类
- python - Pygame 让立方体从屏幕的顶部缓慢移动到底部
- java - POST API 从改造返回空值,但在邮递员中工作
- python - 我不小心弄乱了我的 python 情节并且现在无法修复它,但是它在 30 分钟前工作了
- reactjs - 使用 React 无法在移动设备上播放视频
- java - 即使代码看起来不错,Spring 验证也不起作用
- r - 找到理想的集群
- c++ - 如何遍历数组以查找 C 风格的字符串