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

使用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)

步骤说明

  1. 导入依赖库:导入pandas用于DataFrame的创建和操作。
  2. 创建原始DataFrame:使用提供的数据集初始化DataFrame。
  3. 计算行百分比:
    • 选中Column1到Column4的所有列
    • 调用div(df['Total'], axis=0)实现每行数值与该行Total值的除法运算
    • 乘以100转换为百分比格式,并用round(1)保留1位小数
  4. 合并结果:将Objects列、计算好的百分比列和原始Total列拼接,保证数据结构完整。

注意事项

你提供的期望结果中,Hotel和Golf的Total值存在笔误(原始数据中Golf的Total为101,Hotel为205),上述代码会保留原始正确的Total值,计算出的百分比与修正后的期望结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:40:44