2013-06-13 3 views
24

Zum Beispiel habe ich:Wie Ebenen aus einem multi-indizierten Datenrahmen entfernen?

In [1]: df = pd.DataFrame([8, 9], 
          index=pd.MultiIndex.from_tuples([(1, 1, 1), 
                  (1, 3, 2)]), 
          columns=['A']) 

In [2] df 
Out[2]: 
     A 
1 1 1 8 
    3 2 9 

Gibt es einen besseren Weg, um die letzte Stufe aus dem Index als diese zu entfernen:

In [3]: pd.DataFrame(df.values, 
        index=df.index.droplevel(2), 
        columns=df.columns) 
Out[3]: 
    A 
1 1 8 
    3 9 

Antwort

38
df.reset_index(level=2, drop=True) 
Out[29]: 
    A 
1 1 8 
    3 9 
+6

Bemerkenswert, dass es ein Inplace-Argument ist, das 'true' ist, würde ändern' df' anstatt einen neuen Datenrahmen zurück. –

34

Sie keine neue Datenrahmen Instanz erstellen müssen! Sie können den Index ändern:

In [11]: df.index = df.index.droplevel(2) 

In [12]: df 
Out[12]: 
    A 
1 1 8 
    3 9