按phase分组计算duration列平均值的数据处理需求
按Phase分组计算Duration的平均值
原始数据
id phase duration 19743 D17 1.66 19743 D06 2.25 19743 C17 2.3 19743 D06 4.44
期望结果
id phase duration 19743 D17 1.66 19743 D06 3.35 19743 C17 2.3
实现方案
1. SQL 实现
通过GROUP BY对id和phase分组,用AVG()计算平均值,搭配ROUND()可保留指定小数位数:
SELECT id, phase, ROUND(AVG(duration), 2) AS duration FROM your_table_name GROUP BY id, phase;
2. Python Pandas 实现
利用groupby分组后计算均值,再重置索引恢复表格结构:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'id': [19743, 19743, 19743, 19743], 'phase': ['D17', 'D06', 'C17', 'D06'], 'duration': [1.66, 2.25, 2.3, 4.44] }) # 分组计算均值并格式化小数 result = df.groupby(['id', 'phase'])['duration'].mean().round(2).reset_index() print(result)
3. Excel 实现
数据透视表法
- 选中数据区域,点击「插入」→「数据透视表」
- 将
id、phase拖入「行」区域,duration拖入「值」区域 - 点击值区域的
duration字段,选择「值字段设置」→ 改为「平均值」,并设置小数位数为2
公式法
在空白单元格输入以下公式(假设数据在A2:C5区域),下拉填充后删除重复项即可:=AVERAGEIFS($C$2:$C$5, $A$2:$A$5, $A2, $B$2:$B$5, $B2)
内容的提问来源于stack exchange,提问作者Jzl
相关产品推荐
相关产品推荐

