在pandas中过滤时转换列值

时间:2015-10-09 05:11:21

标签: python pandas

在我使用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,但究竟是怎么回事?

1 个答案:

答案 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