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

Pandas分组按条件计算列占比:补充汇总分类h、i的销售占比

实现方案

你已有的代码已经正确完成了a-g类别的销售占比计算,剩下的h、i汇总项可以通过以下步骤补充计算:

步骤1:运行原有代码完成a-g占比计算

cats = ['a','b','c','d','e','f','g']
df['% Sales Mix'] = (df['Sales'] / df[df.category.isin(cats)].groupby(['level_0'])['Sales'].transform('sum')) * 100

步骤2:补充计算h、i的占比

实现逻辑

  • 所有i行的% Sales Mix直接赋值为100
  • 提取每个level_0分组下i对应的销售额作为分母,计算同分组下h的销售占比

代码实现

# 提取每个分组对应的i的总销售额
group_i_sales = df[df['category'] == 'i = sum([g-h])'].groupby('level_0')['Sales'].first().to_dict()

# 赋值i的占比为100%
df.loc[df['category'] == 'i = sum([g-h])', '% Sales Mix'] = 100

# 计算h的占比
df.loc[df['category'] == 'h = sum([a-f])', '% Sales Mix'] = df.apply(
    lambda row: (row['Sales'] / group_i_sales[row['level_0']]) * 100,
    axis=1
)

# 可选:如果需要和示例一致保留整数占比,加一步取整
df['% Sales Mix'] = df['% Sales Mix'].round(0).astype('Int64')

如果category命名存在不固定的情况,可以把精确匹配替换为模糊匹配:把df['category'] == 'xxx'替换为df['category'].str.startswith('i')/df['category'].str.startswith('h')即可。

内容的提问来源于stack exchange,提问作者Jonas Palačionis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:06:03