2016-07-13 5 views
4

Pandas ermöglicht cool Slicing auf Zeitindizes. Zum Beispiel kann ich einen Datenrahmen df für die Monate von Janurary 2012 bis März 2012 in Scheiben schneiden, indem Sie:Zeitscheibe auf der zweiten Ebene des Multiindex

df['2012-01':'2012-03'] 

Ich habe jedoch einen Datenrahmen df mit einem Multiindex, wo der Zeitindex die zweite Ebene ist. Es sieht aus wie:

df.loc['a']['2012-01':'2012-03'] 

Das ist aber nur für level0 == 'a':

     A   B   C   D   E 
a 2001-01-31 0.864841 0.789273 0.370031 0.448256 0.178515 
    2001-02-28 0.991861 0.079215 0.900788 0.666178 0.693887 
    2001-03-31 0.016674 0.855109 0.984115 0.436574 0.480339 
    2001-04-30 0.120924 0.046013 0.659807 0.210534 0.694029 
    2001-05-31 0.788149 0.296244 0.478201 0.845042 0.437814 
b 2001-01-31 0.497646 0.349958 0.223227 0.812331 0.975012 
    2001-02-28 0.542572 0.472267 0.276186 0.970909 0.138683 
    2001-03-31 0.960813 0.666942 0.069349 0.282741 0.127992 
    2001-04-30 0.491422 0.678742 0.048784 0.612312 0.713472 
    2001-05-31 0.718721 0.504403 0.069047 0.253682 0.836386 

ich immer noch die Methode unter Verwendung der oben auf einem bestimmten Niveau durch in Scheiben schneiden kann.

Wie mache ich das für alle Werte in level0? Ich erwarte, dass so etwas wie dies:

     A   B   C   D   E 
a 2001-01-31 0.864841 0.789273 0.370031 0.448256 0.178515 
    2001-02-28 0.991861 0.079215 0.900788 0.666178 0.693887 
    2001-03-31 0.016674 0.855109 0.984115 0.436574 0.480339 
b 2001-01-31 0.497646 0.349958 0.223227 0.812331 0.975012 
    2001-02-28 0.542572 0.472267 0.276186 0.970909 0.138683 
    2001-03-31 0.960813 0.666942 0.069349 0.282741 0.127992 

Antwort

4

Verwenden pd.IndexSlice

df.loc[pd.IndexSlice[:, '2001-01':'2001-3'], :] 

enter image description here