Pandas df.to_csv() 将字典值保存为字符串。调用 pd.read_csv() 时如何取回字典?
Pandas df.to_csv() saves dict values as string. How can I get the dicts back when calling pd.read_csv()?
我从数据库加载 DataFrame 并有一个列是字典,如下所示:
id some_value ... coordinates
15 34.7 {'type': 'Point', 'coordinates': [-3.2, 37.0]}
但是,当我使用 pd.to_csv() 将我的 DataFrame 保存到磁盘然后重新读取它时,包含坐标的列不是一个字典,而是一个字符串:
id some_value ... coordinates
15 34.7 "{'type': 'Point', 'coordinates': [-3.2, 37.0]}"
如何让 Pandas 将此列作为字典阅读,或者如何将此列转换回字典?
使用df['coordinates'].map(ast.literal_eval)
In [2333]: import ast
In [2334]: type(df.coordinates[0])
Out[2334]: str
In [2335]: df['coordinates'] = df['coordinates'].map(ast.literal_eval)
In [2336]: type(df.coordinates[0])
Out[2336]: dict
In [2337]: df
Out[2337]:
id some_value coordinates
0 15 34.7 {u'type': u'Point', u'coordinates': [-3.2, 37.0]}
如果可以,请使用pd_to_pickle。使用 to_csv 保存数据帧时发生了很多变化。
to_csv 以防万一您想使用其他工具打开
我从数据库加载 DataFrame 并有一个列是字典,如下所示:
id some_value ... coordinates
15 34.7 {'type': 'Point', 'coordinates': [-3.2, 37.0]}
但是,当我使用 pd.to_csv() 将我的 DataFrame 保存到磁盘然后重新读取它时,包含坐标的列不是一个字典,而是一个字符串:
id some_value ... coordinates
15 34.7 "{'type': 'Point', 'coordinates': [-3.2, 37.0]}"
如何让 Pandas 将此列作为字典阅读,或者如何将此列转换回字典?
使用df['coordinates'].map(ast.literal_eval)
In [2333]: import ast
In [2334]: type(df.coordinates[0])
Out[2334]: str
In [2335]: df['coordinates'] = df['coordinates'].map(ast.literal_eval)
In [2336]: type(df.coordinates[0])
Out[2336]: dict
In [2337]: df
Out[2337]:
id some_value coordinates
0 15 34.7 {u'type': u'Point', u'coordinates': [-3.2, 37.0]}
如果可以,请使用pd_to_pickle。使用 to_csv 保存数据帧时发生了很多变化。 to_csv 以防万一您想使用其他工具打开