lexsortedすることが必要です。マルチインデックススライスインデックスが完全に私は<code>foo</code><code>year == someYear</code>のX最大観測を選択したい指数(<code>year</code>、<code>foo</code>)、を有するデータフレームを有する
私のアプローチ
df.sort_index(level=[0, 1], ascending=[1, 0], inplace=True)
df.loc[pd.IndexSlice[2002, :10], :]
だったが、私は(例えばascending = [0, 0]
)の仕分けの異なるバリエーションを試してみましたが、それらはすべてのエラーのいくつかの並べ替えの結果
KeyError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (2), lexsort depth (0)'
を取得します。
xth
行だけが必要だった場合は、ソート後にdf.groupby(level=[0]).nth(x)
とすることができますが、行のセットが必要なので、それはかなり効率的ではありません。
これらの行を選択するにはどうすればよいですか?
rank_int rank
year foo
2015 1.381845 2 320
1.234795 2 259
1.148488 199 2
0.866704 2 363
0.738022 2 319
'df.sort_index(inplace = True)'を使って並べ替えを行うとどうなりますか? – ASGM
@ASGMそれはうまくいきますが、私が昇順ではないので、間違ったグループの 'foo'を取得します。 – FooBar