使用Pandas判断两列同时为2时报ValueError问题求助
解决DataFrame统计双列同时满足条件的次数问题
错误原因
你使用的.bool()方法仅适用于包含单个布尔值的Series,但df['Bedroom2'] == 2返回的是一整列布尔值(对应每行的判断结果),直接调用.bool()会触发"真值歧义"的报错。
正确解决方法
以下是几种高效的实现方式:
方法1:布尔索引+求和(推荐)
利用元素级逻辑与&生成布尔Series,再通过sum()统计True的数量(True会被视为1,False视为0):
count = ((df['Bedroom2'] == 2) & (df['Car'] == 2)).sum() print(count)
方法2:布尔索引+统计行数
先筛选出符合条件的行,再用len()或shape[0]统计行数:
filtered_df = df[(df['Bedroom2'] == 2) & (df['Car'] == 2)] count = len(filtered_df) # 或者一行搞定:count = df[(df['Bedroom2'] == 2) & (df['Car'] == 2)].shape[0] print(count)
方法3:使用query方法(语法更直观)
用类自然语言的语法筛选后统计行数:
count = df.query('Bedroom2 == 2 and Car == 2').shape[0] print(count)
注意事项
- 必须用
&而非and进行元素级逻辑与判断,and是针对整个Series的全局逻辑判断,会再次触发歧义报错。
内容的提问来源于stack exchange,提问作者Jeremy Panthier
相关产品推荐
相关产品推荐

