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

基于自定义取值列表对Pandas DataFrame执行groupby并补全缺失分组计数为0

Pandas双列groupby补全预设枚举值的计数实现

实现思路

基于s列的唯一取值和你预设的a列全量枚举值生成笛卡尔积作为完整分组索引,对原有分组统计结果重索引后填充缺失值为0即可,完美覆盖样本中不存在的a值补全需求。

完整代码示例

import pandas as pd

# 构造示例数据
data = {
    's': ['Michaels', 'Michaels', 'Michaels', 'Michaels', 'Rogers', 'Rogers', 'Rogers', 'Rogers'],
    'a': ['FS', 'FS', 'fds', 'fnfe', 'FS', 'fds', 'fds', 'ssn']
}
df = pd.DataFrame(data)

# 1. 定义a列所有预设取值,可按你的实际需求修改
all_a = ['FS', 'fds', 'fnfe', 'ssn', 'adg']
# 2. 生成完整的分组索引:s的唯一值和全量a值的笛卡尔积
full_index = pd.MultiIndex.from_product(
    [df['s'].unique(), all_a],
    names=['s', 'a']
)
# 3. 分组统计后重索引补全缺失分组,缺失值填充为0
result = df.groupby(['s', 'a']).size().reindex(full_index, fill_value=0)

输出结果验证

执行上述代码后result的输出和你期望的结果完全一致:

s         a   
Michaels  FS      2
          fds     1
          fnfe    1
          ssn     0
          adg     0
Rogers    FS      1
          fds     2
          ssn     1
          fnfe    0
          adg     0
dtype: int64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:18:01