如何按Bouts分组对Distance求和后除以No.tr计算分组均值
按分组计算回合平均距离
处理回合类运动数据时,部分Bouts(回合)对应两条Distance(距离)测量记录,按如下逻辑计算每个Bout的平均距离:
- 按
Bouts字段分组,对同组内的Distance值求和,例如编号为1n的分组Distance总和为345+402=747 - 将每组求得的
Distance总和除以该组对应的No.tr字段取值(例如1n组No.tr取值为2),得到最终结果
涉及的原始数据集结构如下:
| Bouts | No.tr | Distance |
|---|---|---|
| 1n | 2 | 345 |
| 1n | 2 | 402 |
| 2 | 2 | 254 |
| 2 | 2 | 320 |
| 2n | 2 | 230 |
| 2n | 2 | 150 |
| 3 | 1 | 200 |
实现方式(Python pandas)
同一Bouts分组下的No.tr取值完全一致,计算时直接取组内第一个No.tr值作为除数即可,参考代码:
import pandas as pd # 替换为实际的数据读取逻辑 df = pd.read_csv("your_sport_data.csv") # 分组聚合计算平均距离 bout_avg_distance = df.groupby("Bouts", as_index=False).apply( lambda group: group["Distance"].sum() / group["No.tr"].iloc[0] ).rename(columns={None: "avg_distance"})
计算结果
按规则计算得到各回合平均距离:
- 1n:373.5
- 2:287
- 2n:190
- 3:200
内容的提问来源于stack exchange,提问作者susieq
相关产品推荐
相关产品推荐

