mam ramki danych o indeksie (year
, foo
), gdzie mi się podoba wybrać X największe obserwacje foo
gdzie year == someYear
.MultiIndex Odcinanie wymaga indeks zostanie całkowicie lexsorted
Moje podejście było
df.sort_index(level=[0, 1], ascending=[1, 0], inplace=True)
df.loc[pd.IndexSlice[2002, :10], :]
ale mam
KeyError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (2), lexsort depth (0)'
Próbowałem różne warianty sortowania (np ascending = [0, 0]
), ale wszystkie one doprowadziły do jakiegoś błędu.
Jeśli chcę tylko wiersz xth
, mogę po sortowaniu uzyskać df.groupby(level=[0]).nth(x)
, ale ponieważ chcę zestaw wierszy, to nie wydaje się dość skuteczne.
Jaki jest najlepszy sposób wyboru tych wierszy? Niektóre dane grać z:
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
Co się stanie, jeśli po prostu posortujesz używając 'df.sort_index (inplace = True)'? – ASGM
@ASGM To działa, ale skoro nie jestem na szczycie, to otrzymam niewłaściwą grupę 'foo'. – FooBar