インデックス ラベルが混在するマルチ インデックス データフレームを使用しています。つまり、最初のレベルには文字列ラベルが含まれ、2 番目と 3 番目のレベルは整数ラベルで、4 番目のレベルのラベルは日付です。データフレームは以下のようになります (master_df)
X1 X2 X3
bucket Start Stop Date
B1 1 1 1/3/2000 2 2 3
1/4/2000 4 3 3
B1 1 2 1/3/2000 4 2 3
1/4/2000 6 2 2
sub_df を master_df.ix['B1',1,2,:] として取り出し、sub_df でいくつかの操作を行い、同じ場所の master_df に戻します。さまざまな方法を使用して sub_df を取り出すことができますが、それを保存することになると、私が試したすべてのオプションが機能していないようです。この問題は、「整数」ラベル (2 番目と 3 番目のラベル - スタートストップ) に関連していると思います。以下のオプション/方法を試しましたが、成功しませんでした
sub_df = master_df.ix['B1'].ix[1].ix[2]
#do some operations on sub_df
master_df.xs('B1').xs(1).xs(2).update(sub_df)
master_df.ix['B1'].ix[1].ix[2].update(sub_df)
merge(master_df.ix['B1',1,2,:],sub_df)
上記の操作はいずれも、master_df の変更を反映していません (エラー メッセージも表示されません)。
それを行う適切な方法を提案できますか?
アップデート :
sub_df と master_df には、sub_df の操作と同じインデックスがなく、日付インデックスのみが必要です。sub_df は以下のようになります。
X1 X2 X3
Date
1/3/2000 2 2 3
1/4/2000 4 3 3
私が試したら
sub_df = master_df[master_df.index.get_loc(('B1', 1, 2))]
次のエラーが表示されます-
TypeError: ハッシュできない型: 'numpy.ndarray'
ここでの主な目的は、master_df の小さなチャンクのみを操作し、それらの結果を master_df の元の場所に戻すことです。update メソッドを使用してみましたが、この目的を達成するための他の方法で十分です。