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

在Pandas中如何统计包含零计数的分类变量组合值?

实现Pandas多分类列全组合计数(含零值)

在Pandas 2.0.1里,有简洁的惯用方法实现所有分类组合的计数(包括零计数),核心思路是先构造出所有可能的分类组合,再用这个组合对齐原数据的统计结果,填充缺失的零值。

具体实现步骤:

  • 从两个分类列的categories属性中,生成所有可能的笛卡尔积组合(即全分类组合)
  • 对原DataFrame的目标列调用value_counts()得到已有组合的计数
  • 用reindex方法将统计结果对齐到全组合索引上,把缺失的计数填为0

直接看代码实现:

import pandas as pd
abc_categorical = pd.CategoricalDtype(['a', 'b', 'c'], ordered=True)
size_categorical = pd.CategoricalDtype(['s', 'm', 'l'], ordered=True)

df = pd.DataFrame({
        'a':     pd.Categorical(list('aaabababababa'), dtype=abc_categorical),
        'tsize': pd.Categorical(list('smmssmlmlslsl'), dtype=size_categorical),
    }
)

# 生成所有可能的分类组合
all_combinations = pd.MultiIndex.from_product(
    [df['a'].cat.categories, df['tsize'].cat.categories],
    names=['a', 'tsize']
)

# 统计已有组合计数,对齐全组合并填充零值
full_counts = df.value_counts().reindex(all_combinations, fill_value=0)

print(full_counts)

运行后会得到包含全部9种分类组合的统计结果,未出现的组合(如b&l、c相关所有组合)的计数都会显示为0,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:03:18