Я пытаюсь выполнить итерацию по мультииндексу со следующим фреймом данных.
Изображение моего фрейма данных
По сути, я пытаюсь сделать следующее: уменьшите DataFrame до верхних QB, верхних 2 RB, верхних 3 WR и верхних TE на основе их значений в соответствующих столбцах «FantasyPoints» для каждой команды NFL. Я часами пытался понять, как это сделать, но не могу найти решение. Я попытался использовать groupby, но безуспешно, и подумал, что мне, возможно, придется перебрать мультииндекс, но я так и не понял. Заранее спасибо всем, кто может помочь мне разобраться в этом. Ниже приведен код, используемый для генерации DataFrame в его существующем состоянии. Вот ссылка на файл CSV, который используется. https://drive.google.com/file/d/1hX1Jmjk4RBxsH8tt8g1tqwKqrjZkFZp_/view?usp=sharing
#import our CSV file
df = pd.read_csv('2019.csv')
#drop unneccessary columns
df.drop(['Rk', '2PM', '2PP', 'FantPt', 'DKPt', 'FDPt',
'VBD', 'PosRank', 'OvRank', 'PPR', 'Fmb',
'GS', 'Age', 'Tgt', 'Y/A', 'Att', 'Att.1', 'Cmp', 'Y/R'], axis=1, inplace=True)
#fix name formatting
df['Player'] = df['Player'].apply(lambda x: x.split('*')[0]).apply(lambda x: x.split('\\')[0])
#rename columns
df.rename({
'TD': 'PassingTD',
'TD.1': 'RushingTD',
'TD.2': 'ReceivingTD',
'TD.3': 'TotalTD',
'Yds': 'PassingYDs',
'Yds.1': 'RushingYDs',
'Yds.2': 'ReceivingYDs',
}, axis=1, inplace=True)
df['FantasyPoints'] = (df['PassingYDs']*0.04 + df['PassingTD']*4 - df['Int']*2 + df['RushingYDs']*.1
+ df['RushingTD']*6 + df['Rec']*1 + df['ReceivingYDs']*.1 + df['ReceivingTD']*6 - df['FL']*2)
df = df[['Tm', 'FantPos', 'FantasyPoints']]
df = df[df['Tm'] != '2TM']
df = df[df['Tm'] != '3TM']
df.set_index(['Tm', 'FantPos'], inplace=True)
df = df.sort_index()
df.head(30)