【发布时间】:2014-04-10 10:52:10
【问题描述】:
当我尝试使用字符串过滤数据框时出现以下错误
TypeError: Could not compare <type 'str'> type with Series
这是我的代码;
data = pd.read_csv('data.csv')
fildata = data[(data['cat1'] == 'FALSE') & (data['cat2'] != '') & (data['cat3'] == 'FALSE')]
编辑 1:
这是数据的样子;
count,word,cat1,cat2,cat3
1021,.,FALSE,,FALSE
825,the,TRUE,the,FALSE
693,and,TRUE,and,FALSE
647,of,TRUE,of,FALSE
646,",",FALSE,,FALSE
435,to,TRUE,to,FALSE
353,will,TRUE,will,FALSE
297,in,TRUE,in,FALSE
274,be,TRUE,be,FALSE
编辑 2:
但是为什么会这样呢?
data1 = pd.DataFrame({'cat1':[1,2,3,4],'cat2':[2,3,1,4],'cat3':[3,1,2,4]})
fildata = data1[(data1['cat1'] == 1) & (data1['cat2'] != 0) & (data1['cat3']== 3)]
这会导致;
cat1 cat2 cat3
0 1 2 3
编辑 3:
我想问题出在类型上。 'cat1' & 'cat2' 的类型为 'bool'
【问题讨论】:
-
这是非常少的代码,但您在
data['cat3']位上缺少一个结束'。 -
@Leigh 添加了结尾
' -
我尝试过使用数字进行相同的过滤。有用。这里到底发生了什么?
-
这适用于我的玩具示例,您能否发布一些重现问题的代码和数据
-
至少有一个
data[]项可能是Series实例。你能打印出来吗,或者更好的是,你知道如何使用pdb吗?