我有以下数据:
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
,平均值为MONTH
和DAY
。换句话说,我想知道每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
答案 0 :(得分:1)
你试过了吗?
df.groupby("HOUR").agg({'DURATION_1' : 'mean', 'DURATION_2' : 'mean'})