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

pandas统计多列值均为Yes的行数报多维键索引错误如何解决

错误原因

触发Cannot index with multidimensional key报错的核心原因有两点:

  • 你的DataFrame存在重复列名:给出的表结构里有2个同名的First name列、2个同名的Parameter 1列,不存在名为Parameter 2的列。当存在重复列名时,用df.列名的属性访问方式取列,pandas会返回包含所有同名列的子DataFrame而非单列Series,此时做布尔索引就会传入多维键,直接触发报错。
  • 列名引用方式错误:你的列名是带空格的Parameter 1,代码里写的df.Parameter1本身就和实际列名不匹配,进一步放大了索引问题。
解决方案

方法1:先规范列名再统计(推荐)

先给重复列设置唯一名称,从你的需求判断,两个同名的Parameter 1列实际对应你要统计的Parameter 1和Parameter 2,先重命名列:

# 按列的顺序重命名,设置唯一列名
df.columns = ['First name_1', 'First name_2', 'Parameter 1', 'Parameter 2']

之后统计两列同时为Yes的行数,直接对布尔判断结果求和即可,不需要绕路用loc+count:

# 计算符合条件的总行数
yes_count = ((df['Parameter 1'] == 'Yes') & (df['Parameter 2'] == 'Yes')).sum()
# 追加到Temp列表
Temp.append(yes_count)

提示:列名带空格、特殊字符或者存在重名风险时,统一用df['列名']的方括号语法取列,不要用df.列名的属性访问语法,能避免绝大多数列索引错误。

方法2:不改列名,按列位置索引

如果你不想修改原有列名,可以直接用列的位置索引取值(索引从0开始计数):

# 第3列(位置索引2)是第一个Parameter列,第4列(位置索引3)是第二个Parameter列
yes_count = ((df.iloc[:, 2] == 'Yes') & (df.iloc[:, 3] == 'Yes')).sum()
Temp.append(yes_count)

内容的提问来源于stack exchange,提问作者Сергей Корягин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:06:20