質問
階層インデックス行に対して数値演算を実行する効率的な方法は何ですか?
問題
1 GB を超える大きなデータフレームがあり、年ごとにインデックスが作成され、次に国コードによってインデックスが作成されます。小さなサブセットを以下に示します。各国には、年に複数回の観測があります。1 年間の各国の観測値の平均を取り、全体の平均を返したいと思います。望ましい最終結果は、年ごとに索引付けされ、次に各国の年間平均によって索引付けされたデータフレームになります。
概念的には、次のようなことをしたいと思います。
df.ix[:,['x3yv_E', 'x3yv_D', 'x1yv_E', 'x1yv_D']].groupby(df.year).groupby(level=1).apply(lambda x: np.mean(x))
データセットは次のとおりです。
x3yv_E x3yv_D x1yv_E x1yv_D
year
2003 12 0.000000 0.000000 0.000000 0.000000
34 0.009953 0.001400 0.007823 0.000950
12 0.010210 0.001136 0.008333 0.000722
34 0.011143 0.006319 0.007520 0.006732
72 0.018791 0.016717 0.018808 0.015206
2004 0 0.009115 0.000000 0.010243 0.000000
38 0.009059 0.000932 0.010042 0.000573
53 0.009618 0.001152 0.010724 0.000729
70 0.000000 0.000000 0.000000 0.000000
70 0.020655 0.018411 0.012965 0.011640
私が試したこと
pandas.multiindex のレベルに条件を適用するには?
データフレームのサイズが大きいため、ループを避け、上記の 2 つの質問に対する解決策のようにデータフレームを複数回コピーすることを検討しています。
効率的なソリューションに関するアイデアはありますか? ご覧いただきありがとうございます。