如何在Pandas中基于单元格值对分组数据进行求和统计
解决方案
核心问题说明
你当前代码使用的count()聚合逻辑是统计分组后的行数,不会累加Quantity列的商品数量,因此会出现销量统计错误的问题。
修复方案
方案1:修改原有groupby写法
将count()替换为sum(),指定对Quantity列求和即可:
# 分组后对Quantity列求和,as_index=False等价于后面加reset_index() sales = df.groupby(['SKU','Source'], as_index=False)['Quantity'].sum() sales_by_sku_pivot = sales.pivot(columns='Source',index='SKU',values='Quantity').reset_index()
方案2:直接用pivot_table一步生成透视表
pandas内置的pivot_table可以直接完成分组聚合+透视转换的操作,写法更简洁:
import pandas as pd sales_by_sku_pivot = pd.pivot_table( df, index='SKU', columns='Source', values='Quantity', aggfunc='sum', fill_value=0, # 可选配置:无销量的组合自动填充0,避免出现NaN空值 ).reset_index()
输出结果验证
用你提供的示例数据运行后,最终透视表结果为:
| SKU | Amazon | Ebay |
|---|---|---|
| A | 2 | 0 |
| B | 1 | 0 |
| C | 0 | 2 |
完全符合实际销量统计需求。
内容的提问来源于stack exchange,提问作者Phillip Schikora
相关产品推荐
相关产品推荐

