Pandas DataFrame 中的嵌套字典列表

Posted

技术标签:

【中文标题】Pandas DataFrame 中的嵌套字典列表【英文标题】:Nested List of Dictionaries in Pandas DataFrame 【发布时间】:2016-07-24 14:15:44 【问题描述】:

这里的营养素列有 4 个字典,每个字典有 5 个键,每个键有 1 个值。

我怎样才能展平这个营养素列以使每个列或行成为一个子列或行?

实际上它是一个 JSON 文件,我已经将它扁平化了。但我不能更进一步:(

感谢您的帮助。

编辑: 请参阅下面的更多信息以及我尝试过的内容:

【问题讨论】:

您能否以 text 形式发布您的 JSON 文件样本,以便我们复制、粘贴和开发可行的解决方案?我想应该可以按照您想要的方式展平您的 JSON 文件,而无需后处理 我在下面发表了详细评论,如果您愿意,我可以发送 JSON 文件的另一种文本形式。再次感谢! 你觉得为什么我在第一条评论中将“以 text 形式”标记为粗体? ;) 【参考方案1】:

您可以使用json_normalize() 来扁平化您的 JSON 文件,如下所示:

import ujson
import pandas as pd

with open('/path/to/your/file.json') as f:
    data = ujson.load(f)

df = pd.io.json.json_normalize(data, 'nutrients', ['measure','name','ndbno','weight'])

假设 ['measure','name','ndbno','weight'] - 没有嵌套

【讨论】:

谢谢@MaxU,但在我的情况下它不起作用。至少我做不到。 @MaxU。如果再嵌套一次“营养素”会怎样。我也面临同样的问题,但我的“营养素”列有第二级,使用 (data, ['nutrients', 'something_else']) 不起作用。 @DanielVargas,请询问(打开)一个问题,并以文本形式将您的数据集 (JSON) 和您想要的数据集发布到那里 @MaxU 实际上我已经做了好几次了。请看其中之一。 ***.com/questions/47319424/digging-down-json-file @MaxU 我更新了这个问题,完整的文件块更清楚了。 ***.com/questions/47242845/…

以上是关于Pandas DataFrame 中的嵌套字典列表的主要内容,如果未能解决你的问题,请参考以下文章

dataframe中stu用法

在 Pandas Dataframe 列中的嵌套字典中搜索和替换

将字典嵌套在另一个字典中,按 Pandas Dataframe 中的值分组

如何从 Python Pandas Dataframe 中的 STRING 列中提取嵌套字典?

将 pandas.DataFrame 转换为 Python 中的字典列表

带有嵌套字典的 Pandas DataFrame