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

Pandas简便实现同类别列求和:按大洲汇总产品销售占比

按大洲汇总产品销售占比的实现方案

核心实现思路

利用pandas groupby 支持按轴映射直接分组的特性,直接对销售表的国家列按所属大洲分组聚合,无需多次转置、关联操作,代码简洁且性能更高。

代码实现

import pandas as pd

# 原始业务数据(示例)
df = pd.DataFrame({"fr": [.2, .1, .3], "ge": [.2, .2, .2], "uk": [.2, .3, .2], "us": [.2, .2, .1], "br": [.2, .2, .2]})
country = pd.DataFrame({"continent": ["Europe", "Europe", "Europe", "Europe", "Europe", "Americas", "Americas", "Americas", "Asia", "Asia"], "country": ["fr", "ge", "uk", "es", "pt", "us", "br", "ca", "cn", "jp"]})

# 1. 构造国家→大洲的映射字典
country_continent_map = country.set_index('country')['continent'].to_dict()
# 2. 对销售表列按大洲分组求和,直接得到各产品的大洲汇总占比
continent_result = df.groupby(country_continent_map, axis=1).sum()

方案优势

  • 代码极简,核心逻辑仅2行,可读性强
  • 性能适配百万级行的业务场景:仅对列维度(国家数量,通常最多数百个)做分组计算,行维度不需要做任何转换操作,运算开销远低于转置+合并的方案
  • 结果自动保留原始产品的行顺序,无需额外做数据对齐

异常场景适配

如果销售表中存在部分国家不在大洲映射表中,可通过以下代码将这些国家归类为Other分类,避免数据丢失:

# 生成带默认分类的分组key
group_key = df.columns.map(country_continent_map).fillna('Other')
continent_result = df.groupby(group_key, axis=1).sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:04