2013-06-13 12 views
24

Na przykład mam:Jak usunąć poziomy z wielowątkowej ramki danych?

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 

Czy istnieje lepszy sposób, aby usunąć ostatni poziom z indeksu niż to:

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

Odpowiedz

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

Warto zauważyć, że istnieje inplace argumentem, który jest 'true' byłoby zmodyfikować' df' niż powrocie nowego DataFrame. –

34

Nie trzeba utworzyć nową instancję DataFrame! Można zmodyfikować indeksu:

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

In [12]: df 
Out[12]: 
    A 
1 1 8 
    3 9 
Powiązane problemy