2017-09-27 31 views
1

我有一個熊貓多指數有兩個指標,一個數據和一個性別列。它看起來像這樣:如何在熊貓多指標中小時分組

    Division North South West East 

       Date Gender  
2016-05-16 19:00:00  F  0  2  3  3 
         M  12  15 12 12 
2016-05-16 20:00:00  F  12  9 11 11 
         M  10  13  8  9 
2016-05-16 21:00:00  F  9  4  7  1 
         M  5  1 12 10 

現在,如果我想找到的每一個小時,我知道我能做到的平均值,如:

df.groupby(df.index.hour).mean() 

,但是這似乎並沒有當你有一個工作多指數。我發現,我所能做的到達日期指標,如:

df.groupby(df.index.get_level_values('Date').hour).mean() 

其排序在一天24小時內平均的,但我迷失了性別指數...

所以我的問題是:我如何才能找到各部門按性別劃分的平均小時數值?

回答

2

我想你可以添加MultiIndex水平,需要pandas 0.20.1+

df1 = df.groupby([df.index.get_level_values('Date').hour,'Gender']).mean() 
print (df1) 
      North South West East 
Date Gender       
19 F   0  2  3  3 
    M   12  15 12 12 
20 F   12  9 11 11 
    M   10  13  8  9 
21 F   9  4  7  1 
    M   5  1 12 10 

另一種解決方案:

df1 = df.groupby([df.index.get_level_values('Date').hour, 
        df.index.get_level_values('Gender')]).mean() 
print (df1) 
      North South West East 
Date Gender       
19 F   0  2  3  3 
    M   12  15 12 12 
20 F   12  9 11 11 
    M   10  13  8  9 
21 F   9  4  7  1 
    M   5  1 12 10 

或者從MultiIndex只需創建列:

df = df.reset_index() 
df1 = df.groupby([df['Date'].dt.hour, 'Gender']).mean() 
print (df1) 
      North South West East 
Date Gender       
19 F   0  2  3  3 
    M   12  15 12 12 
20 F   12  9 11 11 
    M   10  13  8  9 
21 F   9  4  7  1 
    M   5  1 12 10