У меня есть набор данных со следующими характеристиками. 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, показать оба из них