You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合布尔与字符串条件筛选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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:45:04