在csv文件中解析json字符串

时间:2017-03-11 15:13:20

标签: python json csv pandas dataframe

我有一个csv文件包含一些json字符串,我想解析它并存储到dataframe中。 该文件看起来像

file1,"{\"A1\": {\"a\": \"123\"}, \"B1\": {\"b1\": \"456\", \"b2\": \"789\", \"b3\": \"000\"}}",
file2,"{\"A2\": {\"a\": \"321\"}, \"B2\": {\"b1\": \"654\", \"b2\": \"987\"}}"

获得字典中的密钥后。我想要的日期框架将是

 1              2                                    3           
file1   {"A1":{"a":"123"}}    {"B1":{"b1":"456","b2":"789","b3":"000"}}  
file2   {"A2":{"a2":"321"}}   {"B2":{"b1":"654","b2":"987"}}

第2列和第3列中的值将是字典。 我试过pd.read_csv(file,quotechar ='“',header = None)它仍然以错误的方式将我的json分开... 有什么建议? 非常感谢!

1 个答案:

答案 0 :(得分:3)

您拥有的数据是使用\"来转义每个单元格中的双引号。可以通过将doublequote=Trueescapechar='\\'设置为参数来指定此行为,如下所示:

df = pd.read_csv('input.json', doublequote=True, escapechar='\\')
print df

给你类似的东西:

       0                                                  1     2
0  file1  {"A1": {"a": "123"}, "B1": {"b1": "456", "b2":...      
1  file2  {"A2": {"a": "321"}, "B2": {"b1": "654", "b2":...  None
   file1 {"A1": {"a": "123"}, "B1": {"b1": "456", "b2": "789", "b3": "000"}}  \
0  file2  {"A2": {"a": "321"}, "B2": {"b1": "654", "b2":...                    

   Unnamed: 2  
0         NaN