【问题标题】:Pandas df.to_csv() saves dict values as string. How can I get the dicts back when calling pd.read_csv()?Pandas df.to_csv() 将 dict 值保存为字符串。调用 pd.read_csv() 时如何取回字典?
【发布时间】:2018-03-27 03:08:25
【问题描述】:

我从数据库加载一个 DataFrame 并有一个 dict 列,如下所示:

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 将此列作为 dict 读取,或者如何将此列转换回 dict?

【问题讨论】:

  • df.coordinates 或 df['coordinates'] ?
  • 这按预期工作。

标签: python pandas dictionary eval export-to-csv


【解决方案1】:

使用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]}

【讨论】:

    【解决方案2】:

    如果可以,请使用 pd_to_pickle。使用 to_csv 保存数据帧时发生了很多变化。 to_csv 以防万一你想用其他工具打开

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多