2013-06-13 11 views
24

例えば、私が持っている:マルチインデックスデータフレームからレベルを削除するにはどうすればよいですか?

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 

は、これよりもインデックスから最後のレベルを除去するためのより良い方法があります:

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

答えて

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

ワース:あなたは、インデックスを変更することができます。 –

34

あなたが新しいデータフレームのインスタンスを作成する必要はありません! true`を変更 `df`ではなく、新たなデータフレームを返すよります`でインプレース引数があることが、注目に

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

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