将嵌套JSON的CSV导入Pandas DataFrame

时间:2018-03-06 20:06:48

标签: json python-3.x pandas csv import

我尝试使用Jupiter Notebook导入一个带有两个嵌套JSON Obejcts的csv文件。

我收到此错误。

  

ParserError:标记数据时出错。 C错误:第3行预计29个字段,见35

问题是Pandas不识别JSON对象,只使用逗号的CSV分隔符。

这是CSV文件的示例行:

309,DVD10_Welt.mxf,16947519284,00:37:32:24,0_yd3ugljx,"{"Type":"Source","Content-Type":"Beitrag"}",97,"Welt",NULL,NULL,NULL,"{"ContentType":"Beitrag","Description":"Sie beobachten jeden.","Keywords":["wissensthek","zukunft","\u00dcberwachung","roboter","technik","internet","dvd","wissen"],"ProductionDate":"2013-07-10T00:30:06.000Z","TitleIntern":null}"

这是我在Jupyter的路线:

df = pd.read_csv(csv_file)
df

有人可以给我一个暗示吗?

感谢Manuel

1 个答案:

答案 0 :(得分:1)

我不认为你可以在没有预处理的情况下阅读它,因为它不是一个有效的CSV文件

如果您可以正确引用保存的CSV文件 - 它会起作用。

演示:

In [87]: df = pd.DataFrame({'ID':[1,2]})

In [88]: df['JSON'] = '{"Type":"Source","Content-Type":"Beitrag"}'

In [89]: df
Out[89]:
   ID                                        JSON
0   1  {"Type":"Source","Content-Type":"Beitrag"}
1   2  {"Type":"Source","Content-Type":"Beitrag"}

In [90]: df.to_csv('d:/temp/a.csv', index=False)

产生的CSV:

ID,JSON
1,"{""Type"":""Source"",""Content-Type"":""Beitrag""}"
2,"{""Type"":""Source"",""Content-Type"":""Beitrag""}"

检查:

In [91]: pd.read_csv('d:/temp/a.csv')
Out[91]:
   ID                                        JSON
0   1  {"Type":"Source","Content-Type":"Beitrag"}
1   2  {"Type":"Source","Content-Type":"Beitrag"}