您可以使用literal_eval转换应为字典(或其他类型)的字符串:
from ast import literal_eval
def try_literal_eval(s):
try:
return literal_eval(s)
except ValueError:
return s
现在,您可以将其应用于您的DataFrame:
In [11]: df = pd.DataFrame({'A': ["hello","world",'{"a":5,"b":6,"c":8}',"usa","india",'{"d":9,"e":10,"f":11}']})
In [12]: df.loc[2, "A"]
Out[12]: '{"a":5,"b":6,"c":8}'
In [13]: df
Out[13]:
A
0 hello
1 world
2 {"a":5,"b":6,"c":8}
3 usa
4 india
5 {"d":9,"e":10,"f":11}
In [14]: df.applymap(try_literal_eval)
Out[14]:
A
0 hello
1 world
2 {'a': 5, 'b': 6, 'c': 8}
3 usa
4 india
5 {'d': 9, 'e': 10, 'f': 11}
In [15]: df.applymap(try_literal_eval).loc[2, "A"]
Out[15]: {'a': 5, 'b': 6, 'c': 8}
注意:就其他调用而言,这是非常昂贵的(在时间上),但是,当您在处理DataFrames / Series中的字典时,您必须默认使用python对象,因此事情将会相对缓慢…进行非规范化可能是一个好主意,即将数据作为列返回,例如使用json_normalize.
如果觉得《python 读取csv文件转成字符串_从CSV读取到 dataframe pandas python时dict对象转换为字符串...》对你有帮助,请点赞、收藏,并留下你的观点哦!