如何在Pandas中计算行百分比?含数据示例与预期结果
计算数据框指定周各列的百分比
原始数据
Week 1 2 a 4 5 6 a 9 10 10+ 3 2 2 1 0 0 0 4 44 68 18 33 4 27 5 198 313 70 142 20 259
需求
计算第5周各列数值在所有行(周3、周4、周5)对应列总和中的占比,输出百分比格式的结果。
预期结果
Week 1 2 a 4 5 6 a 9 10 10+ 5. 20% 31% 7% 14% 2% 26%
实现方法(Python pandas)
import pandas as pd # 构建原始数据框 data = { 'Week': [3, 4, 5], '1': [2, 44, 198], '2 a 4': [2, 68, 313], '5': [1, 18, 70], '6 a 9': [0, 33, 142], '10': [0, 4, 20], '10+': [0, 27, 259] } df = pd.DataFrame(data) # 计算各列总和(排除Week列) col_totals = df.drop('Week', axis=1).sum() # 提取第5周数据,计算百分比并格式化 week5_row = df[df['Week'] == 5].drop('Week', axis=1).iloc[0] week5_percent = (week5_row / col_totals * 100).round().astype(int).astype(str) + '%' # 整理结果格式 result_df = pd.DataFrame([week5_percent.values], columns=week5_percent.index) result_df.insert(0, 'Week', '5.') print(result_df.to_string(index=False))
逻辑说明
- 将原始数据转为pandas数据框,便于批量计算
- 计算每一列的总和(周3、4、5的数值相加)
- 提取第5周的各列数值,分别除以对应列的总和,乘以100后取整,拼接百分号
- 重新整理输出格式,与预期结果对齐
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

