IndexError: список индексов вне диапазона для многоуровневого столбца данных - PullRequest
0 голосов
/ 19 января 2019

У меня есть набор данных со следующими характеристиками. 3 индекса. 2 слоя уровней столбцов. Для каждого индекса есть 2 строки данных.

С учетом вышесказанного я пытаюсь отфильтровать строки со значениями в одном столбце больше 0,7, но получаю только ошибку индекса.

Мой фрейм данных выглядит следующим образом

indx=['nmatch','pts','gfa','gco','cs','fts','bts','o25%','po25/bts']
findx=[('fecha',''),('torneo',''),('partido','')]+[('h/a stats',x) for x in indx]+[('total stats',y) for y in indx]
index=pd.MultiIndex.from_tuples(findx, names=['tipo', 'stat'])

fframe=pd.DataFrame(l,columns=index)
fframe.set_index(['fecha','torneo','partido'],inplace=True)

Если я делаю

fframe[fframe[('h/a stats','po25/bts')]>0.7]

Я получаю что-то вроде

date    trophy        match         data
 A        B        ganma v theta     True
 A        B        ganma v theta     False
 F        B        Etha v psi        True
 F        B        Etha v psi        True
 C        D        epsilon v mu      False
 C        D        epsilon v mu      False

и если я сделаю

ind=fframe.index[f[('h/a stats','po25/bts')]>0.7]

Я получаю индексы для этого, но когда я делаю

fframe.loc[ind]

>IndexError: list index out of range

Я бы хотел, чтобы индексы были уникальными, вместо 4 B должен быть только один B, а вместо 2 совпадений должен быть только один. Но в основном я хочу получить фрейм со всеми строками True, и если это произойдет, например, для ganma v theta, где один ряд - True, а другой - False, показать оба из них

...