pandas对布尔类型应用过滤器

2 投票
2 回答
6086 浏览
提问于 2025-04-18 02:11

这是我数据表中各列的数据类型;

count     int64
word     object
cat1       bool
cat2     object
cat3       bool
dtype: object

我该如何对'cat1'和'cat2'这两列进行布尔值的过滤呢?

大概是这样的...

data[(data['cat1'].bool() == FALSE) & (data['cat3'].bool() == FALSE)]

2 个回答

0

你可以简单地这样做,

data[(data['cat1']==False) & (data['cat3']==False)]

举个例子:

test = pd.DataFrame({'word':'','cat1':bool(),'cat2':'','cat3':bool()},index=[])
test.loc[0]=['test1',True,'try',False]
test.loc[1]=['test1',False,'try',False]
test[(test['cat1']==False) & (test['cat3']==False)]
1

只需要这样做:

data[(data['cat1'] == FALSE) & (data['cat2'] == FALSE)]

cat2 是一个 object 类型的数据,所以它可能是字符串。我觉得你想要的是:

data[(data['cat1'] == FALSE) & (data['cat3'] == FALSE)]

如果它确实是字符串值的话,你可以这样做:

data[(data['cat1'] == FALSE) & (data['cat2'] == 'FALSE')]

或者:

data[(data['cat1'] == FALSE) & (data['cat2'].str.contains('FALSE'))]

撰写回答