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

如何让Pandas GroupBy补全缺失性别分组的计数为0?

补全分组中缺失类别的计数(含0值)

我来帮你搞定这个需求!你现在的问题是分组后只显示了数据中实际存在的value_text和gender组合,缺失的组合(比如Type 2对应F)没有被展示出来,想要把这些缺失项的计数补为0对吧?

这里有两种简单的实现方法,都能达到你想要的效果:

方法一:用reindex补全所有组合

先获取筛选后的数据集,然后生成所有可能的value_text和gender组合,最后用reindex把缺失的组合补全并填充0:

# 第一步:筛选目标数据
filtered_frame = frame[
    frame['value_text'].str.match('Type 2') | 
    frame['value_text'].str.match('Type II diabetes')
]

# 第二步:生成所有需要的value_text和gender的笛卡尔积组合
all_groups = pd.MultiIndex.from_product(
    [filtered_frame['value_text'].unique(), filtered_frame['gender'].unique()],
    names=['value_text', 'gender']
)

# 第三步:计算原始分组计数,再补全缺失组合
count_result = filtered_frame.groupby(['value_text', 'gender'])['value_text'].count()
final_result = count_result.reindex(all_groups, fill_value=0).reset_index(name='count')

方法二:用pivot_table自动补全

pivot_table默认会填充缺失的行列组合,之后再转成你需要的格式即可:

filtered_frame = frame[
    frame['value_text'].str.match('Type 2') | 
    frame['value_text'].str.match('Type II diabetes')
]

final_result = filtered_frame.pivot_table(
    index='value_text',
    columns='gender',
    values='value_text',
    aggfunc='count',
    fill_value=0  # 直接填充缺失值为0
).stack().reset_index(name='count')

这两种方法都能得到你期望的结果,会把所有value_text和gender的组合都列出来,不存在的组合计数自动设为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:21:15