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

满足DataFrame列条件时使用.value_counts()报错,求排查解决

几种Pandas代码报错原因解析

数据集定义

import pandas as pd
import numpy as np

df=pd.DataFrame(
    {
        'Color': ['red','blue','red','red','green','red','yellow'],
        'Type': ['Oil', 'Aluminium', 'Oil', 'Oil', 'Cement Paint', 'Synthetic Rubber', 'Emulsion'],
        'Finish' : ['Satin', 'Matte', 'Matte', 'Satin', 'Semi-gloss', 'Satin', 'Satin'],
        'Use' : ['Interior', 'Exterior', 'Interior', 'Interior', 'Exterior', 'Exterior', 'Exterior'],
        'Price' : [55, 75, 60, 60, 55, 75, 50]
    }
)

尝试1:np.where参数缺失+逻辑错误

代码:

np.where(
    df['Price'] == 55,
    df['Color'].value_counts()
)

报错信息:KeyError: 'Price'
错误原因:

  • np.where必须传入3个参数:条件表达式、满足条件时的取值、不满足条件时的取值,你只传了两个,参数缺失导致解析出错,并非真的不存在Price列。
  • 退一步说,df['Color'].value_counts()返回的是统计颜色频次的Series,它的索引是颜色值,和原df的行索引完全不匹配,就算补全第三个参数,也无法和条件生成的布尔数组对应赋值,逻辑本身不成立。

尝试2:df.loc语法错误+列不存在

代码:

df.loc[(df['Price'] == 55), df['Category'].value_counts()]

报错信息:KeyError: 'Price'
错误原因:

  • 根源是数据集里根本没有Category列,df['Category']直接触发KeyError,报错信息里的Price是误导——其实df['Price']本身没问题,但因为前面的df['Category']先报错,导致整个语句执行失败。
  • 其次,df.loc的第二个参数是列选择器,只能是列名列表、布尔数组或者切片,你传的value_counts()返回的Series完全不符合语法要求。

尝试3:访问不存在的列

代码:

df['Category'].value_counts()[df['Price'] == 55]

报错信息:KeyError: 'Category'
错误原因:

  • 数据集里没有定义Category列,直接访问df['Category']必然触发KeyError,这是最直接的问题。
  • 就算存在Category列,value_counts()返回的统计结果,用df['Price'] == 55这个布尔数组去索引也不匹配——因为value_counts()的索引是Category的取值,不是原df的行索引,逻辑完全不通。

正确写法

如果需求是统计Price等于55的行中,各Color的出现次数,正确代码如下:

df[df['Price'] == 55]['Color'].value_counts()

执行结果:

red      1
green    1
Name: Color, dtype: int64

内容的提问来源于stack exchange,提问作者Jose Daniel Rojas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:40:36