10

DataFrameMultiIndex を持つ df があり、レベルが L であると仮定しましょう。

インデックスから L を削除して再度追加する方法はありますか?

df = df.index.drop('L')DataFrame から L を完全に削除します ( df= df.reset_index()drop 引数を持つものとは異なります)。もちろんできますdf = df.reset_index().set_index(everything_but_L, inplace=True)

ここで、インデックスに L 以外のすべてが含まれていると仮定して、L を追加したいとし df.index.insert(0, df.L)ます。機能しません。繰り返しますが、もちろん電話df= df.reset_index().set_index(everything_including_L, inplace=True)することはできますが、気分が悪いです。

なぜこれが必要なのですか?インデックスは一意である必要はないため、インデックスを一意にするために新しい列を追加したい場合があります。削除は、データを分割した後、インデックスの 1 つのレベルに情報が含まれなくなった場合に役立ちます (たとえば、インデックスが A、B で、A=x の df を操作しているが、発生する A を失いたくない場合)。 index.droplevel('A')) を使用)。

4

1 に答える 1

17

現在のバージョン (0.17.1) では、

df.set_index(column_to_add, append=True, inplace=True)

df.reset_index(level=column_to_remove_from_index).

これにより、n 列をリセットしてからインデックスに n+1 を追加する場合と比較して、大幅なスピードアップが実現します。

于 2012-07-17T08:34:29.440 に答える