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

如何用Pandas统计多列中指定值(含未出现值)的出现次数?

解决DataFrame多列指定值统计(含未出现值)的问题

先给出示例数据和依赖库:

import pandas as pd

foo = pd.DataFrame({'A':[False,False,True], 'B':[None, False, True], 'C': [None, None, None]})

要统计指定值(比如False、True、None)在每列的出现次数,哪怕列里没出现该值也要显示0,可以用以下方法:

# 定义需要统计的所有目标值
target_values = [False, True, None]

# 逐列统计,补全缺失值并填充0
count_result = foo.apply(
    lambda col: col.value_counts(dropna=False).reindex(target_values, fill_value=0)
).T

# 可选:给结果设置更清晰的命名
count_result.index.name = '列名'
count_result.columns = ['False', 'True', 'None']

print(count_result)

运行后输出结果:

False  True  None
列名                  
A        2     1     0
B        1     1     1
C        0     0     3

关键逻辑说明

  • value_counts(dropna=False):保留对None的统计,同时统计列内所有出现过的值的次数
  • reindex(target_values, fill_value=0):强制对齐所有目标值,列里没出现的目标值直接填充0,避免遗漏
  • .T转置:把原来的列名转为行索引,统计值作为列,更符合“按列统计”的展示逻辑

为什么pivot_table会报错?

你之前用pivot_table出现KeyError: False,是因为某列(比如示例里的C列)完全没有False这个值,pivot_table找不到对应的索引项就会抛出错误。而上面的方法通过reindex主动补全所有需要统计的目标值,就不会出现这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:40:24