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

Pandas groupby分组统计时未出现类别自动补0的实现方法

Pandas按分组统计频次并补全缺失值实现方法

首先修正你原有代码的语法错误,同时通过统一统计维度的方式补全缺失值,保证两个分组的输出列表长度一致,实现代码如下:

import pandas as pd

titles=['MR.', 'MRS.', 'MR.', 'MR.', 'MRS.', 'MR.', 'MISS.', 'MR.', 'MRS.', 'MR.', 'MR.', 'MR.', 'MRS.', 'MR.',
    'MRS.', 'MRS.', 'MR.', 'MR.', 'MISS.', 'MRS.', 'MR.', 'MASTER.', 'MRS.', 'MR.', 'MRS.', 'MR.', 'MISS.', 
    'MR.', 'MR.', 'MR.', 'MR.', 'MR.', 'MRS.', 'MRS.', 'MR.', 'MR.', 'MISS.', 'MISS.', 'MR.', 'MR.', 'MR.', 
    'MR.', 'MR.', 'MRS.', 'MRS.', 'MR.', 'MR.', 'MR.', 'MRS.', 'MRS.', 'MR.', 'MR.', 'MISS.', 'MISS.', 'MR.',
    'MASTER.', 'MR.', 'MR.', 'MR.', 'MISS.', 'MR.', 'MR.', 'MR.', 'MISS.', 'MASTER.', 'MRS.', 'MISS.', 'MR.', 
    'MR.', 'MRS.', 'MR.', 'MISS.', 'MR.', 'MISS.', 'MR.', 'MR.', 'MRS.', 'MR.', 'MASTER.', 'DON.']

vals=[1,0,1,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,1,1,1,0,0,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,0,0,1,0,1,0,1,
     0,1,0,0,0,1,1,1,1,0,0,0,1,0,1,0,0,0,1,0,1,0,1,1,0,1,1,0,0,0]

# 构建DataFrame
df = pd.DataFrame({'titles': titles, 'vals': vals})

# 拿到所有title的唯一值作为统一统计维度,保证两个分组的统计项完全一致
all_titles = df['titles'].unique()

# 分组统计后转宽表,缺失的title自动补0
count_df = df.groupby('vals')['titles'].value_counts().unstack(fill_value=0).reindex(columns=all_titles, fill_value=0)

# 拆分得到两个独立列表
list_vals0 = count_df.loc[0].tolist()
list_vals1 = count_df.loc[1].tolist()

print("vals=0的统计列表:", list_vals0)
print("vals=1的统计列表:", list_vals1)

运行输出

  • vals=0的统计列表:[19, 13, 9, 2, 1]
  • vals=1的统计列表:[26, 5, 3, 2, 0]
    输出完全匹配你原有扁平化的统计结果,且补全了vals=1分组中缺失的DON.对应统计值0,两个列表长度一致。

核心逻辑

  • 先提取全量title唯一值作为统一统计维度,避免不同分组的统计维度不一致
  • 通过unstack将长格式的分组统计结果转为宽表,缺失的title取值自动补0
  • 按vals的不同取值分别提取行数据转列表即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:57:03