解析csv文件中的json字符串

jim*_*923 2 python csv json dataframe pandas

我有一个包含一些 JSON 字符串的 CSV 文件,我想将其解析并存储到数据框中。该文件如下所示:

file1,"{\"A1\": {\"a\": \"123\"}, \"B1\": {\"b1\": \"456\", \"b2\": \"789\", \"b3\": \"000\"}}",
file2,"{\"A2\": {\"a\": \"321\"}, \"B2\": {\"b1\": \"654\", \"b2\": \"987\"}}"
Run Code Online (Sandbox Code Playgroud)

得到字典中的key后。我想要的日期范围是:

 1              2                                    3           
file1   {"A1":{"a":"123"}}    {"B1":{"b1":"456","b2":"789","b3":"000"}}  
file2   {"A2":{"a2":"321"}}   {"B2":{"b1":"654","b2":"987"}}
Run Code Online (Sandbox Code Playgroud)

第 2 列和第 3 列中的值将是字典。我努力了:

pd.read_csv(file, quotechar='"', header=None) 
Run Code Online (Sandbox Code Playgroud)

但它仍然以错误的方式分隔我的 JSON...
有什么建议吗?非常感谢!

Mar*_*ans 7

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

df = pd.read_csv('input.json', doublequote=True, escapechar='\\')
print df
Run Code Online (Sandbox Code Playgroud)

给你类似的东西:

       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
Run Code Online (Sandbox Code Playgroud)