使用Python计算DataFrame单元格占行总计的百分比
解决方法:计算DataFrame行内百分比并保留总计列
完整可运行代码
import pandas as pd # 原始数据集 data = [['ALFA', 35, 47, 67, 44, 193], ['Bravo', 51, 52, 16, 8, 127], ['Charlie', 59, 75, 2, 14, 150], ['Delta', 59, 75, 2, 34, 170], ['Echo', 59, 75, 2, 14, 150], ['Foxtrot', 40, 43, 26, 27, 136], ['Golf', 35, 31, 22, 13, 101], ['Hotel', 89, 58, 24, 34, 205]] df = pd.DataFrame(data, columns=['Objects', 'Column1', 'Column2', 'Column3', 'Column4', 'Total']) # 计算Column1到Column4的行百分比(保留1位小数) percent_columns = df.loc[:, 'Column1':'Column4'].div(df['Total'], axis=0) * 100 percent_columns = percent_columns.round(1) # 合并结果列,保留Objects和Total列 result_df = pd.concat([df[['Objects']], percent_columns, df[['Total']]], axis=1) print(result_df)
步骤说明
- 导入依赖库:导入
pandas用于DataFrame的创建和操作。 - 创建原始DataFrame:使用提供的数据集初始化DataFrame。
- 计算行百分比:
- 选中
Column1到Column4的所有列 - 调用
div(df['Total'], axis=0)实现每行数值与该行Total值的除法运算 - 乘以100转换为百分比格式,并用
round(1)保留1位小数
- 选中
- 合并结果:将
Objects列、计算好的百分比列和原始Total列拼接,保证数据结构完整。
注意事项
你提供的期望结果中,Hotel和Golf的Total值存在笔误(原始数据中Golf的Total为101,Hotel为205),上述代码会保留原始正确的Total值,计算出的百分比与修正后的期望结果完全一致。
内容的提问来源于stack exchange,提问作者Oshimiri Atata
相关产品推荐
相关产品推荐

