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

如何对Pandas DataFrame分组并转宽表,计算性别加权占比?

解决方法

你可以通过分组求和、计算组内占比和数据重塑三个步骤实现需求,以下是具体代码和说明:

1. 准备示例数据

首先构造你提供的DataFrame:

import pandas as pd

data = {
    'Category': ['Food', 'Food', 'Beverage', 'Beverage', 'Beverage', 'Food'],
    'Detail': ['Apple', 'Apple', 'Milk', 'Milk', 'Milk', 'Banana'],
    'Gender': ['Female', 'Male', 'Female', 'Male', 'Male', 'Female'],
    'Weight': [30, 40, 10, 5, 20, 50]
}
df = pd.DataFrame(data)

2. 方法一:分步实现

步骤1:分组计算各性别Weight总和

按Category、Detail、Gender三级分组,统计每组的Weight总和:

grouped_sum = df.groupby(['Category', 'Detail', 'Gender'])['Weight'].sum().reset_index()

此时grouped_sum的结果:

CategoryDetailGenderWeight
BeverageMilkFemale10
BeverageMilkMale25
FoodAppleFemale30
FoodAppleMale40
FoodBananaFemale50

步骤2:计算组内占比

通过transform获取每个Category+Detail组的总Weight,再计算各性别占比:

# 计算每组总Weight
grouped_sum['total_weight'] = grouped_sum.groupby(['Category', 'Detail'])['Weight'].transform('sum')
# 计算占比并保留两位小数
grouped_sum['percentage'] = (grouped_sum['Weight'] / grouped_sum['total_weight']).round(2)

步骤3:重塑为宽格式

用pivot将长格式转宽格式,缺失的性别(如Banana的Male)填充为0,再格式化为百分比字符串:

result = grouped_sum.pivot(
    index=['Category', 'Detail'],
    columns='Gender',
    values='percentage'
).fillna(0)

# 转换为带%的字符串
result = result.applymap(lambda x: f"{int(x*100)}%")

# 重置索引,将分组列变回普通列
result = result.reset_index()

3. 方法二:用pivot_table一步简化

直接使用pivot_table完成分组求和和宽格式转换,再计算占比:

# 先得到宽格式的Weight总和,缺失值填充为0
pivot_df = df.pivot_table(
    index=['Category', 'Detail'],
    columns='Gender',
    values='Weight',
    aggfunc='sum',
    fill_value=0
)

# 计算每行总Weight,再求各性别占比并格式化
row_totals = pivot_df.sum(axis=1)
pivot_df['Female'] = (pivot_df['Female'] / row_totals).round(2).apply(lambda x: f"{int(x*100)}%")
pivot_df['Male'] = (pivot_df['Male'] / row_totals).round(2).apply(lambda x: f"{int(x*100)}%")

# 重置索引
pivot_df = pivot_df.reset_index()

最终两种方法都会得到你需要的结果:

CategoryDetailFemaleMale
BeverageMilk29%71%
FoodApple43%57%
FoodBanana100%0%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:15:31