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

如何实现pd.crosstab()的自定义归一化,按指定分组计算占比

解决方案

你之前使用normalize='columns'是按整列所有行的总和做归一化,不符合你需要的按「性别+教育程度」分组内计算婚姻状况占比的逻辑,可以按以下步骤实现:

  1. 先生成仅统计人数的交叉表,不提前做归一化
ct_count = pd.crosstab(
    index=[df['Gender'], df['Education'], df['MaritalStatus']],
    columns=df['month']
)
  1. 对交叉表按前两层索引(Gender、Education)分组,在分组内按列做归一化后保留两位小数:
ct = ct_count.groupby(level=[0, 1], group_keys=False).apply(
    lambda x: x.div(x.sum(axis=0)).round(2)
)

逻辑说明

以上代码中groupby(level=[0,1])就是按「性别+教育程度」对数据分组,x.div(x.sum(axis=0))会将分组内每个月的各婚姻状况人数,除以该分组对应月份的总人数,完全匹配你需要的计算规则。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:45:01