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

如何用Pandas批量计算列相对占比,无需编写单独语句?

解决方案

可以通过Pandas的Series链式调用实现一次性完成所有占比计算,无需拆分多条语句。假设你的数据集已加载为DataFrame df,直接用以下代码即可得到目标格式的结果:

import pandas as pd

# 一条语句完成计算与格式转换
result_df = (
    pd.Series({
        'Athlete': round(df['Athlete'].sum() / len(df) * 100),
        'Baseball': round(df['Baseball'].sum() / df['Athlete'].sum() * 100),
        'Cheer': round(df['Cheer'].sum() / df['Athlete'].sum() * 100),
        'Football': round(df['Football'].sum() / df['Athlete'].sum() * 100)
    })
    .reset_index()
    .rename(columns={'index': 'header 1', 0: ''})
)

print(result_df)

代码说明

  • 用字典式pd.Series批量定义所有计算项:
    • 运动员占总人数比例:通过df['Athlete'].sum()统计运动员总数,除以总学生数len(df)后乘100
    • 各项目占运动员比例:对应项目的总和除以运动员总数,再乘100
  • 链式调用reset_index()将Series转为DataFrame,再用rename()修改列名,完全匹配你期望的输出格式

运行后输出结果如下:

header 1
Athlete75
Baseball33
Cheer33
Football33

内容的提问来源于stack exchange,提问作者M J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:52:36