私の最初の質問への回答のおかげで、私は今、私が望む方法でマルチインデックスされたDataFrameを持っています。データ構造にデータが入ったので、それを取り出して、これを行うためのより良い方法があるかどうか疑問に思っています。私の2つの問題は関連していますが、別々の「理想的な」解決策があるかもしれません。
サンプルDataFrame(切り捨て)
Experiment IWWGCW IWWGDW
Lead Time 24 48 24 48
2010-11-27 12:00:00 0.997 0.991 0.998 0.990
2010-11-28 12:00:00 0.998 0.987 0.997 0.990
2010-11-29 12:00:00 0.997 0.992 0.997 0.992
2010-11-30 12:00:00 0.997 0.987 0.997 0.987
2010-12-01 12:00:00 0.996 0.986 0.996 0.986
反復
このDataFrameをループして、反復によって1つのインデックスディメンションのみがダウンするようにしたいと思います。つまり、リードタイム列を持つ2つのDataFrameをiteritems
返して生成する動作です。[('IWWGCW', df['IWWGCW']), ('IWWGDW', df['IWWGDW'])]
私のブルートフォースソリューションは、基本的にを実行するラッパールーチンを使用すること[(key, df[key] for key in df.columns.levels[0]]
です。これを行うためのより良い方法はありますか?
申し込み
また、「他のすべての人からIWWGDWエントリを減算する」などのことを実行して、対の差を計算したいと思います。私はやろうとしましたが、使用するかどうかに関係なくdf.apply(lambda f: f - df['IWWGDW'])
取得します。上記の反復回避策を使用して新しいDataFrameを再構築しようとしましたが、物事をブルートフォースするときは常に心配しています。この種の計算を行うためのより「パンダシック」な方法はありますか?KeyError: ('IWWGDW', 'occurred at index 2010-11-26 12:00:00')
axis=1
axis=0