2016-12-29 62 views
1

我有以下數據:如何按小時對數值進行分組?

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。換句話說,我想知道什麼是DURATIONHOUR

這是我現在的代碼。如果我從df.groupby(['MONTH','DAY','HOUR','DURATION'])刪除'MONTH','DAY',那麼我得到更高的值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

'df.groupby( 「小時」)DURATION.mean()'? – Psidom

+0

@Psidom:如果我需要在'DURATION'之外添加更多變量,該怎麼辦?我可以做'df.groupby(「HOUR」)。[「DURATION_1」,「DURATION_2」]。mean()'? – Dinosaurius

回答

1

你試過:

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

@JonClemens我的小小恐龍更有趣 –

相關問題