展平嵌套JSON对象的列

时间:2018-08-15 16:29:00

标签: python json mongodb pandas

我将csv中的MongoDB导出到Python Pandas DataFrame中。然而,事实证明,我对包含嵌套数据的特定列进行拼合的努力被证明是徒劳的。

(据我所知)应该提取值列的标准函数正在返回错误。该功能是json_normalize库中的pandas.io.json。返回的错误是:

AttributeError: 'str' object has no attribute 'values'

进一步检查后,我可以看到,如果要打印该列,它并没有嵌套json_normalize函数所需的方式。在docs pertaining to that function中,data参数需要一个Unserialized JSON object,文档将其描述如下:

data = [{'id': 1, 'name': {'first': 'Coleen', 'last': 'Volk'}},
        {'name': {'given': 'Mose', 'family': 'Regner'}},
        {'id': 2, 'name': 'Faye Raker'}]

但是,我数据列中的两行看起来像这样:

[{"name":"A","size":"","price":300,"quantity":0,"_id":"9574"},  {"name":"B","size":"","price":400,"quantity":0,"_id":"1345"}]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
[{"name":"C","size":"","price":300,"quantity":0,"_id":"0596"},{"size":"","price":400,"quantity":0,"_id":"0931","name":"D"}] 

如果根据我的数据描述不清楚,则基本上,该列中的每一行都包含在方括号内,此外,所有行均不包含在一组外部方括号内,并且每组卷曲下一组大括号中的括号不是“逗号”。

我可以使用regex函数从每个单元格中删除所有这些外部方括号,但是json_normalize函数返回相同的错误。

将数据集作为JSON文件而不是csv导入也不会更改任何内容。我仍然遇到相同的错误。

对我来说,如何格式化整个列并不十分明显,以致它看起来像json_normalize所要求的方式。

0 个答案:

没有答案