如何用Pandas计算分组求和后的相对百分比?
解决DataFrame分组求和及占比计算问题
直接上可运行的代码方案,针对需求一步到位:
import pandas as pd # 你的示例数据 df = pd.DataFrame({ 'Company': ['Company1', 'Company2', 'Company3', 'Company1', 'Company3'], 'STC Watts': [10.10, 9.6, 13.3, 5.6, 10.12] # 其他列无需改动,保留原结构即可 }) # 第一步:计算整个数据集的STC Watts总数值 total_stc = df['STC Watts'].sum() # 第二步:按Company分组求和,同时计算占比 # 分组求和后重置索引,把分组字段变回普通列 grouped_result = df.groupby('Company')['STC Watts'].sum().reset_index() # 新增百分比列,保留两位小数提升可读性 grouped_result['STC Percentage (%)'] = (grouped_result['STC Watts'] / total_stc * 100).round(2) # 输出结果 print(grouped_result)
运行后会得到如下结果:
Company STC Watts STC Percentage (%) 0 Company1 15.70 28.62 1 Company2 9.60 17.49 2 Company3 23.42 43.89
关键说明
- 全局总和
total_stc必须在分组前计算,确保是整个数据集的总和,而非分组内的局部总和,这是常见的踩坑点。 - 使用
reset_index()是为了把分组后的Company从索引变回普通列,方便后续新增百分比列的操作。 - 如果需要更精准的百分比,可以调整
round()里的参数,比如保留4位小数就写round(4)。
内容的提问来源于stack exchange,提问作者mjsunnyside
相关产品推荐
相关产品推荐

