2017-06-06 4 views
2

Ich bin neu im MultiIndex in Pandas, aber ich habe eine Situation, in der es hilfreich wäre. Ich habe einen df mit einem Multiindex (ON_SCENE und LAST) strukturiert, wie so:Subsetting mit MultiIndex mit Zeit

       ID     
ON_SCENE   LAST              
2016-05-05 03:58:54 last1 1000    
2016-05-05 17:23:39 last1 1001    
2016-05-05 18:20:50 last1 1002    
2016-05-05 21:30:29 last2 1003   
2016-05-05 22:33:19 last2 1004 
2016-05-05 23:30:23 last3 1005 
2016-05-06 00:08:34 last3 1006 
2016-05-06 01:33:54 last3 1007 

Ich möchte diese Daten zu der Teilmenge als so ein Datum und Nachname mit:

df.loc[j.strftime('%Y-%m-%d'),Last_Name] 

wobei j datetime.date ist Typ und Last_Name ist eine str mit einem Nachnamen. Leider bekomme ich immer einen KeyError. Ich habe auch versucht:

df[j.strftime('%Y-%m-%d')] 
    df[Last_Name] 

Aber diese geben mir auch einen KeyErrors. Nicht sicher, was ich falsch mache?

Antwort

2
In [103]: x.loc[('2016-05-05', 'last2'), :] 
Out[103]: 
          ID 
ON_SCENE   LAST 
2016-05-05 21:30:29 last2 1003 
2016-05-05 22:33:19 last2 1004 

oder mit pd.IndexSlice:

In [104]: idx = pd.IndexSlice 

In [105]: x.loc[idx['2016-05-05':'2016-05-06', 'last3'], :] 
Out[105]: 
          ID 
ON_SCENE   LAST 
2016-05-05 23:30:23 last3 1005 
2016-05-06 00:08:34 last3 1006 
2016-05-06 01:33:54 last3 1007 

Pandas Documentation with examples

+0

Dank! Ich habe die Spalten vergessen. Der erste funktionierte für mich und macht den meisten Sinn (obwohl für andere, die das finden, ich einen 'lexsort'-Fehler erhielt, der es erforderte, dass ich 'df.sort_index (inplace = True)' ausführte, bevor die Lösung funktionierte). – jtam

+0

@jtam, froh, dass ich helfen konnte. Ja, Pandas erwarten lexographisch sortierte Indizes bei der Verwendung von Slices ... – MaxU