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

Pandas跨多列计算各运动参与者的平均年龄与体重

Pandas高效计算每项运动参与者的平均年龄和体重

不需要用循环或者会生成组合的groupby,用向量化矩阵运算是最高效的方式,直接一次性计算所有运动的统计值:

实现代码

import pandas as pd

df = pd.DataFrame([
    [0, 1, 0, 30, 150],
    [1, 1, 1, 25, 200],
    [1, 0, 0, 20, 175]
], columns=[
    "Plays Basketball",
    "Plays Soccer",
    "Plays Football",
    "Age",
    "Weight"
])

# 分离运动列和需要统计的数值列
sports_cols = df.columns[:3]
numeric_cols = ['Age', 'Weight']

# 计算每项运动的参与人数
participant_counts = df[sports_cols].sum(axis=0)

# 用矩阵乘法计算每项运动对应的年龄、体重总和
# 运动列转置后和数值列做内积,得到每个运动的总年龄、总重量
total_stats = df[sports_cols].T @ df[numeric_cols]

# 计算平均值
result = total_stats / participant_counts

print(result)

输出结果

Age  Weight
Plays Basketball  22.5   187.5
Plays Soccer      27.5   175.0
Plays Football    25.0   200.0

为什么高效?

这个方法完全用Pandas的向量化操作完成,避免了逐行循环或者分组的额外开销:

  • 矩阵乘法@一次性完成所有运动的总和计算,比循环遍历每个运动列快得多
  • 所有操作都是基于Pandas底层的优化实现(依赖NumPy的C语言运算),性能远高于Python层面的循环

内容的提问来源于stack exchange,提问作者Scott Guthart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:07:54