如何按小时对数值进行分组?

时间:2016-12-29 16:36:00

标签: python pandas

我有以下数据:

df =

MONTH DAY HOUR DURATION
1     1   7    20 
1     1   7    21 
1     2   7    20
1     2   8    22
2     1   7    19
2     1   8    25
2     1   8    29
2     2   8    27

我想得到DURATION分组的平均值HOUR,平均值为MONTHDAY。换句话说,我想知道每DURATION的平均HOUR是多少。

这是我目前的代码。如果我从'MONTH','DAY'删除df.groupby(['MONTH','DAY','HOUR','DURATION']),那么我会获得更高的DURATION值,这些值不正确。因此我决定保留'MONTH','DAY'

grouped = df.groupby(['MONTH','DAY','HOUR','DURATION']).size() \
    .groupby(level=['HOUR','DURATION']).mean().reset_index()
grouped 

然而,无论如何,它给了我不正确的输出。这是一些随机数据的示例(可以看到小时8重复多次,同时显示列0。)

    HOUR    DURATION    0
0   7   122.0   1.0
1   8   77.0    1.0
2   8   82.0    1.0
3   8   83.0    1.0

1 个答案:

答案 0 :(得分:1)

你试过了吗?

df.groupby("HOUR").agg({'DURATION_1' : 'mean', 'DURATION_2' : 'mean'})