对象到字典Python
大家好,我有一个pandas列,其中包含的对象是字典,但不能识别为字典对象到字典Python,python,object,dictionary,pandas,mapping,Python,Object,Dictionary,Pandas,Mapping,大家好,我有一个pandas列,其中包含的对象是字典,但不能识别为字典 df.rowExample[0] = '[{"sold": 12, "breed": "golden"}, {"breed": "silver", "bought": 49}, {"breed": "golden", "bought": 29}]' 我尝试了DataFrame.to_dict(df.column)和dict(df.column),但键只是一个数字索引,值是整行 谢
df.rowExample[0] = '[{"sold": 12, "breed": "golden"}, {"breed": "silver",
"bought": 49}, {"breed": "golden", "bought": 29}]'
我尝试了DataFrame.to_dict(df.column)和dict(df.column),但键只是一个数字索引,值是整行
谢谢 它好像没有字典。。。而是字典形式的字符串 试着做一些类似的事情
>>> import ast
>>> ast.literal_eval(df.rowExample[0])
编辑:这看起来像是返回一个字典列表。。。所以
ast.literal_eval(df.rowExample[0])中的字典的:
abetterdict=dictionary
它似乎没有字典。。。而是字典形式的字符串
试着做一些类似的事情
>>> import ast
>>> ast.literal_eval(df.rowExample[0])
编辑:这看起来像是返回一个字典列表。。。所以
ast.literal_eval(df.rowExample[0])中的字典的:
abetterdict=dictionary
您的数据是字典列表的字符串表示形式。您可以使用literal\u eval
将其转换为列表对象:
import ast
obj = '[{"sold": 12, "breed": "golden"}, {"breed": "silver", "bought": 49},
{"breed": "golden", "bought": 29}]'
obj = ast.literal_eval(obj)
或者通过使用json
模块以某种方式更加安全:
import json
obj = '[{"sold": 12, "breed": "golden"}, {"breed": "silver", "bought": 49},
{"breed": "golden", "bought": 29}]'
obj = json.loads(obj)
您的数据是字典列表的字符串表示形式。您可以使用
literal\u eval
将其转换为列表对象:
import ast
obj = '[{"sold": 12, "breed": "golden"}, {"breed": "silver", "bought": 49},
{"breed": "golden", "bought": 29}]'
obj = ast.literal_eval(obj)
或者通过使用json
模块以某种方式更加安全:
import json
obj = '[{"sold": 12, "breed": "golden"}, {"breed": "silver", "bought": 49},
{"breed": "golden", "bought": 29}]'
obj = json.loads(obj)
那只是一根线。只要字符串只包含字符串、数字、元组、列表、dicts、boolean和None,就可以使用转换字符串。这只是一个字符串。只要您的字符串只包含字符串、数字、元组、列表、dicts、boolean和None,您就可以使用转换字符串。非常感谢Busterdust!我使用rowExample[0]只显示了一行,是否有一种方法可以对每一行执行此操作?我尝试了一个for循环,但是对于arrayFrows:ast.literal\u eval(row)中的行,它的速度非常慢,很可能会继续很慢,你需要点击所有的东西,这是非常糟糕的!我使用rowExample[0]只显示了一行,是否有一种方法可以对每一行执行此操作?我尝试了一个for循环,但是它对于arrayFrows:ast.literal\u eval(row)中的行非常慢,很可能会继续很慢,您需要解决所有问题。问题不在于使用
json.loads
是否比使用ast.literal\u eval
更安全。很简单,如果你有json
,你应该使用json.loads
,如果你有由字符串、数字、元组、列表、dicts、boolean和None组成的Python文本,您应该使用ast.literal\u eval
。谢谢DeepSpace和Steven问题不在于使用json.loads
是否比使用ast.literal\u eval
更安全。很简单,如果你有json
,你应该使用json.loads
,如果你有由字符串、数字、元组、列表、dicts、boolean和None
组成的Python文本,你应该使用ast.literal\u eval
。谢谢DeepSpace和Steven