2012-06-14 9 views
14

'd'を最初にリセットすることなく、インデックスに追加するにはどうすればよいですか?Pandas DataFrameリセットせずにインデックスに列を追加

from pandas import DataFrame 
df = DataFrame({'a': range(6), 'b': range(6), 'c': range(6)}) 
df.set_index(['a','b'], inplace=True) 
df['d'] = range(6) 

# how do I set index to 'a b d' without having to reset it first? 
df.reset_index(['a','b','d'], inplace=True) 
df.set_index(['a','b','d'], inplace=True) 

df 

答えて

30

我々は​​にappendオプションを追加しました。それを試してください。

コマンドは次のとおりです。

df.set_index(['d'], append=True) 

(私たちは、彼らがすでにインデックスであり、私たちは彼らに追加​​しているとして、[「A」、「B」]を指定する必要はありません)

-1

あなたのコードは無効です。私のバージョンのpandas(0.8.1)では、reset_indexにインプレース引数がありません。 以下はあなたが望むものを実現しますが、おそらくもっとエレガントな方法ですが、reset_indexを避ける理由について十分な情報を提供していません。

df2.index = MultiIndex.from_tuples([(x,y,df2['d'].values[i]) for i,(x,y) in enumerate(df2.index.values)]) 

HTH

関連する問題