2013-11-20 4 views
6

私は時系列データフレームを持っており、私はトライアルと測定によって再インデックスしたいと思います。私はこれに変身したいパンダのデータフレームマルチインデックスのサブインデックス

   value 
Trial   
    1  0  13 
      1   3 
      2   4 
    2  3  NaN 
      4  12 
    3  5  34 

::簡体

、私はこれを持って

    value 
Trial  
    1  0  13 
      1   3 
      2   4 
    2  0  NaN 
      1  12 
    3  0  34 

にはどうすれば最善これを行うことができますか?

答えて

7

ちょうど昨日、有名なAndy Haydenがこの機能をバージョン0.13のpandasに追加しました。これはいつでも公開されます。ドキュメントに追加した使用例については、hereを参照してください。

開発元のpandasをソースからインストールするのが快適であれば、今すぐ使用できます。

次のコードは、軽度であれば同等であり、最近のバージョンのpandasでも動作します。

grouped = df.reset_index().groupby('Trial') 
df['Measurements'] = grouped.apply(lambda x: Series(np.arange(len(x)), x.index)) 

最後に、df.set_index(['Trial', 'Measurements'], inplace=True)を使用して目的の結果を得る。

+4

haha​​! (注:累計はインデックス内の二重引用符でも機能しますが、「等価」はありません...ドキュメントではちょっと頑張り、「本質的に等価」と言っています:p) –

+0

私のインデックスは呼ばれていません(「測定」) - むしろ名前が全くありません。 – TheChymera

+1

無名インデックスレベルは '' groupby(level = 1) ''のように、 '' level''キーワードを使って指定できます。 –