如何结合布尔与字符串条件筛选DataFrame数据并解决TypeError报错
报错原因&解决方案
1. 核心报错原因
- 位运算符
&的优先级高于比较运算符,未给单个判断条件加括号时,会优先执行'm' & data.Horror这类逻辑,字符串和布尔序列类型不匹配直接触发类型错误 - 第三种写法误将
&放在两个DataFrame之间做运算,&仅支持对布尔序列做按位与操作,不能直接作用于DataFrame - 额外注意:你csv文件里的
Horror列存储的是字符格式的T/F,读入后默认是字符串类型,不是布尔值,直接和True判断会匹配不到结果,需要先做类型转换
2. 正确实现步骤
第一步:转换布尔列类型
import pandas as pd # 读入数据时直接转换布尔列 bool_mapping = {'T': True, 'F': False} data = pd.read_csv("你的文件路径.csv", converters={ "Horror": lambda x: bool_mapping[x.strip()], "Fiction": lambda x: bool_mapping[x.strip()], "Comedy": lambda x: bool_mapping[x.strip()] }) # 如果已经读入数据,可以单独转换Horror列 # data['Horror'] = data['Horror'].str.strip() == 'T'
第二步:正确筛选统计
# 多条件筛选必须给每个条件单独加括号 male_horror_data = data[(data['gender'] == 'm') & (data['Horror'] == True)] # 统计数量 count = len(male_horror_data) # 也可以一步完成统计 count = data[(data['gender'] == 'm') & (data['Horror'] == True)].shape[0]
内容的提问来源于stack exchange,提问作者garima
相关产品推荐
相关产品推荐

