日時列とその他のキーの両方を含むマルチインデックスを使用してDataFrameをリサンプリングしたいと思います。データフレームは次のようになります。
import pandas as pd
from StringIO import StringIO
csv = StringIO("""ID,NAME,DATE,VAR1
1,a,03-JAN-2013,69
1,a,04-JAN-2013,77
1,a,05-JAN-2013,75
2,b,03-JAN-2013,69
2,b,04-JAN-2013,75
2,b,05-JAN-2013,72""")
df = pd.read_csv(csv, index_col=['DATE', 'ID'], parse_dates=['DATE'])
df.columns.name = 'Params'
リサンプリングはデータタイムインデックスでのみ許可されているため、他のインデックス列をアンスタックすると役立つと思いました。そして確かにそれはそうです、しかし私は後でそれを再び積み重ねることができません。
print df.unstack('ID').resample('W-THU')
Params VAR1
ID 1 2
DATE
2013-01-03 69 69.0
2013-01-10 76 73.5
ただし、 「ID」を再度スタックすると、インデックスエラーが発生します。
print df.unstack('ID').resample('W-THU').stack('ID')
IndexError: index 0 is out of bounds for axis 0 with size 0
不思議なことに、私は他の列レベルを両方でスタックすることができます:
print df.unstack('ID').resample('W-THU').stack(0)
と
print df.unstack('ID').resample('W-THU').stack('Params')
インデックスエラーは、両方の列レベルを並べ替える(入れ替える)場合にも発生します。誰かがこの問題を克服する方法を知っていますか?