【发布时间】:2017-01-05 07:11:25
【问题描述】:
这是我的数据框:
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
我需要根据UD 和QTY 的每个组合计算TIME_1 和TIME_2 的平均值。然后我想添加新列GRADE_COUNT,它将存储每组的总行数。例如,在上述数据集中,UD = 1 和 QTY = 20 定义的每组有 4 行。
结果应该是这个:
df =
UD QTY MEAN_TIME_1 MEAN_TIME_2 COUNT
1 20 24.67 17.02 4
2 25 23.3 19.9 1
我编写了这段代码,它对行进行分组、计算平均值和计数值。
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()
但它不是计算平均时间,而是计算平均 QTY 和 GRADE,UD 列也消失了。
【问题讨论】:
-
df.groupby(['UD','QTY'])[['TIME_1','TIME_2']].mean()- 这就是你想要的吗? -
@MaxU:请看我的更新。我发布了预期的结果。
-
@DavidZ:我正在使用最后一个版本的熊猫:0.19.1
-
@MaxU:谢谢。但它会创建两列
count:一个每个TIME_1,另一个每个TIME_2。我需要每组的总行数。 -
@Dinosaurius (3 cmets up) 抱歉,这实际上是我的错误。不管怎样,你要不要按
GRADE分组?你在你的问题中都说。