Daframe打印为str而不是dict

时间:2019-12-25 06:48:34

标签: pandas

数据框在下面

flag
{'a':True,'b':False}
{'a':False,'b':True}

代码

s = [x  for x in df['flag']]
for i in s:
    print (i)
    print (type(i))

输出低于

{'a':True,'b':False}

<class 'str'>

{'a':False,'b':True}

<class 'str'>

我需要将数据类型打印为<class 'dict'>

2 个答案:

答案 0 :(得分:1)

使用eval(i)

     import ast
     ast.literal_eval(i) 

在您的for循环中

答案 1 :(得分:0)

在创建数据框时,字典可能是作为字符串而不是字典传递的,这就是为什么要使用类型<class 'str'>而不是<class 'dict'>的原因。

df = pd.DataFrame(data={'flag':["{'a':True,'b':False}","{'a':False,'b':True}"]})

给予:

{'a':True,'b':False}
<class 'str'>
{'a':False,'b':True}
<class 'str'>

还有这个

df = pd.DataFrame(data={'flag':[{'a':True,'b':False},{'a':False,'b':True}]})

给予:

{'a': True, 'b': False}
<class 'dict'>
{'a': False, 'b': True}
<class 'dict'>