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

Pandas删除指定行后value_counts仍显示已删除值计数为0如何解决

原因说明

这个现象和df_minus_ferrets是否为原DataFrame的视图无关,核心原因是你的species_col列为分类(Categorical)数据类型,而非普通的字符串object类型。
分类类型的核心特性是会固定保留初始化时定义的所有类别枚举值,即便对应类别的行已经被全部删除,这些类别依然会保留在列的元信息里。value_counts()默认会对所有保留的类别做统计,没有数据的类别计数就会显示为0。
你可以执行以下代码验证列的类型:

print(df_minus_ferrets['species_col'].dtype)

如果输出结果为category即可确认上述判断。

解决方案

有两种常用方式可以让已删除的类别不显示在计数结果中:

  • 调用value_counts()时添加observed=True参数,仅统计数据中实际存在的类别:
df_minus_ferrets['species_col'].value_counts(observed=True)
  • 先删除分类列中未使用的类别,再做统计:
# 移除所有没有对应数据的类别
df_minus_ferrets['species_col'] = df_minus_ferrets['species_col'].cat.remove_unused_categories()
# 再调用value_counts就不会出现已删除的ferret类别
df_minus_ferrets['species_col'].value_counts()

内容的提问来源于stack exchange,提问作者Lucy Goosey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:36:02