【发布时间】:2022-01-19 18:38:09
【问题描述】:
我在 Pandas 数据框中有一列,其中包含带有 Python 原生类型的字典(如字符串、整数、浮点数等)。
将此数据框保存在 csv 文件中并重新加载后,这些值将作为字符串加载,并且似乎无法将它们转换回字典。字典的 Python 字符串表示不是 JSON(单引号而不是双引号,布尔值以大写字母而不是小写字母开头),因此无法使用 json.loads()
考虑这个例子:
import json
import pandas as pd
df = pd.DataFrame({'dict_column' : [{'key' : 'val'}]})
df.iloc[0, 0]['key'] --> returns 'val'
df.to_csv('file.csv', index=False)
df_loaded = pd.read_csv('file.csv')
df_loaded.iloc[0, 0]['key'] --> returns an error
json.loads(df_loaded.iloc[0, 0]) --> returns an error
因此,在将数据帧保存到 csv 之前,在 dict 列上应用 json.dumps 似乎非常重要。但是如何处理现有的 CSV?无论如何将 dict 的字符串表示形式转换回 dict ?我有一个这样保存的巨大数据框,我不想丢失其中的数据。
希望有比直接将CSV文件中的单引号替换成双引号更好的解决方案。
【问题讨论】:
-
您可以使用
ast.literal_eval()将字符串表示形式转换回字典。 -
你只想要
eval -
注意,一般来说,您不想在 pandas 数据帧中使用字典。如果您这样做,请考虑使用
pickle来保存您的数据框。
标签: python json pandas dataframe dictionary