在我使用pandas阅读的csv文件中,有一个bool类型的列,但是字符串格式为' F'或者' T'。如何在过滤时将其转换为真正的Bool?只有在过滤时才需要更改源文件:
# how it is now
if something:
df1 = df1[df1['str_bool_column'] == 'F']
# how I want
if something:
df1 = df1[df1['str_bool_column'] == False]
我可能应该使用apply
,但究竟是怎么回事?
答案 0 :(得分:0)
从csv读取后,您可以将该列转换为True/False
值列。一种方法是使用Series.map
,将'F'
映射到False
,将'T'
映射到True
。示例 -
df1['str_bool_column'] = df1['str_bool_column'].map({'F':False,'T':True})
演示 -
In [9]: df = pd.DataFrame([[1,'F'],[2,'T'],[3,'F'],[4,'T']],columns=['A','B'])
In [10]: df
Out[10]:
A B
0 1 F
1 2 T
2 3 F
3 4 T
In [11]: df['B'] = df['B'].map({'F':False,'T':True})
In [12]: df
Out[12]:
A B
0 1 False
1 2 True
2 3 False
3 4 True