Python TypeError:无法比较<;类型';str'&燃气轮机;带系列的类型

Python TypeError:无法比较<;类型';str'&燃气轮机;带系列的类型,python,pandas,Python,Pandas,当我尝试使用字符串过滤数据帧时,出现以下错误 TypeError:无法将类型与系列进行比较 这是我的密码 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,

当我尝试使用字符串过滤数据帧时,出现以下错误

TypeError:无法将类型与系列进行比较

这是我的密码

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'

以下内容适用于我:

In [114]:

temp = """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"""
data = pd.read_csv(io.StringIO(temp))
fildata = data[(data['cat1'] == False) & (data['cat2'].isnull() ) & (data['cat3'] == False)]
In [115]:

fildata
Out[115]:
   count word   cat1 cat2   cat3
0   1021    .  False  NaN  False
4    646    ,  False  NaN  False

[2 rows x 5 columns]
您遇到的问题是字符串
FALSE
/
TRUE
是由
read\u csv
解释的布尔数据类型:

In [112]:

data.dtypes
Out[112]:
count     int64
word     object
cat1       bool
cat2     object
cat3       bool
dtype: object

因此,您的比较应该针对这种类型,而不是字符串
'FALSE'

,这是一个非常小的代码,可以说很多,但您在
数据['cat3']
位上缺少了一个结束
。@Leigh添加了结束
我尝试了同样的数字过滤。它起作用了。这里到底发生了什么?这在我的玩具示例中起了作用,你能发布一些代码和数据来重现问题吗?至少一个
数据[]
项可能是
系列
实例。你能把它们打印出来吗?或者更好的是,你知道如何使用
pdb
?是的,先生。刚想出来:(…我如何与布尔类型进行比较?这是一个新问题吗?用
data['cat1']='FALSE'
替换
data['cat1']==FALSE
可能会有帮助。
不是data['cat1']
可能会更多Pythonic@SAnand不,您不能将数组与
not
进行比较这将引发
ValueError
,除非您使用
any
all
来避免歧义