这是我的数据框:
df =
UD QTY GRADE TIME_1 TIME_2
1 20 5 22.5 16.1
1 20 5 26.2 19.5
1 20 5 30.0 14.0
1 20 4 20.0 18.5
2 25 4 23.3 19.9
Run Code Online (Sandbox Code Playgroud)
我需要计算的平均值TIME_1和TIME_2各组合按UD,和QTY。然后,我想添加新列GRADE_COUNT,该列将存储每个组的行总数。例如,在上述数据集中,每个组有4行,分别由UD= 1和QTY= 20 定义。
结果应该是这样的:
df =
UD QTY MEAN_TIME_1 MEAN_TIME_2 COUNT
1 20 24.67 17.02 4
2 25 23.3 19.9 1
Run Code Online (Sandbox Code Playgroud)
我写了这段代码,对行进行分组,计算平均值并计算值。
groupby_object = df[['UD', 'QTY', 'GRADE', 'TIME_1', 'TIME_2']].groupby(['TIME_1', 'TIME_2])
df = groupby_object.agg('mean').rename(columns = lambda x: x + ' mean').join(pd.DataFrame(groupby_object.size(),columns=['counts'])).reset_index()
Run Code Online (Sandbox Code Playgroud)
但是,它没有计算平均时间,而是计算平均QTY和GRADE,列也UD消失了。
无需合并或分配即可在同一步骤中进行所有不同类型的聚合。groupby.agg允许您使用映射到所使用的聚合函数的列字典来执行此操作
df1 = df.groupby(['UD', 'QTY']).agg({'TIME_1': 'mean',
'TIME_2': 'mean',
'GRADE':'count'}).reset_index()
UD QTY TIME_1 GRADE TIME_2
0 1 20 24.675 4 17.025
1 2 25 23.300 1 19.900
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1862 次 |
| 最近记录: |