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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:37:06