为什么.astype('bool')将所有值都转换为True?

时间:2018-08-30 05:23:19

标签: python pandas

我正在尝试将字符串“ TRUE”和“ FALSE”的数据框中的列转换为布尔值。对于其他数据类型,我只使用了astype,没有任何问题,但是由于某种原因,在此列上使用它会将所有值转换为True。

我已经对字符串列表重复了如下测试

test = ['False','False','True']
test = pd.DataFrame(test)
test = test.astype('bool')

但是它给出了相同的结果,这是怎么回事,以及如何正确转换数据类型?我尝试使用map和replace在转换前更改值,但都没有更改结果。

2 个答案:

答案 0 :(得分:0)

有问题strings values are converted to Trues

解决方案:

test = ['False','False','True']
test = pd.DataFrame(test)
test = test[0].map({'False':False, 'True':True})
print (test)
0    False
1    False
2     True
Name: 0, dtype: bool

或者:

import ast

test = test[0].map(ast.literal_eval)
print (test)
0    False
1    False
2     True
Name: 0, dtype: bool

答案 1 :(得分:0)

这是一种明确的方法,

test=test[0]=='True'

O / P:

0    False
1    False
2     True
Name: 0, dtype: bool
bool