2016-03-31 6 views
0

einen Multi-Index-Datenrahmen Gegeben:Zugriff Reihe von Multi-Index-Datenrahmen

df = pd.DataFrame({'Last Name' : ['Deere','Deere','Foo' ,'Foo' ,'Man' ], 
        'Middle Name': ['Goat' ,'Lamb' ,'Man' ,'Man' ,'Date' ], 
        'First Name': ['John' ,'Jane' ,'Group' ,'Alone','Karate'], 
        'Value1':  [ 1  , 2  , 3  , 4  , 5  ], 
        'Value2':  ['Green','Blue' ,'Yellow','Black','Purple']}) 

df.set_index(['Last Name','Middle Name','First Name'],inplace=True) 

, die wie folgt aussieht:

         Value1  Value2 
Last Name Middle Name First Name 
Deere  Goat   John   1   Green 
      Lamb   Jane   2   Blue 
Foo   Man   Group  3   Yellow 
          Alone  4   Black 
Man   Date   Karate  5   Purple 

Ich möchte eine bestimmte Zeile zugreifen zu können, etwas entlang der Linien der Verwendung :

df.loc['Foo','Man','Alone'] 

und haben das Kommando eine Serie zurückkehren, die ähnlich aussieht:

Value1  4 
Value2 Black 
name: ('Last Name','Middle Name','First Name'), dtype: object 

Antwort

0

Ihre erste Methode funktioniert:

s = df.loc['Foo', 'Man', 'Alone'] 
>>> s 
Value1  4 
Value2 Black 
Name: (Foo, Man, Alone), dtype: object 

Der einzige Unterschied ist, dass es scheint, dass Sie die Reihe umbenennen möchten.

s.name = tuple(df.index.names) 

>>> s 
Value1  4 
Value2 Black 
Name: (Last Name, Middle Name, First Name), dtype: object 

Beachten Sie, dass bei Verwendung doppelter Klammern ein Datenrahmen anstelle einer Serie zurückgegeben wird.