Я пытаюсь выполнить итерацию по фрейму данных по снукерным матчам по одному матчу за раз, чтобы после каждого матча я мог обновлять рейтинги участвующих игроков.
Я написал некоторый код, который достигает этогоно это довольно медленно (прибл. 10 минут для 36000 матчей / рядов).У меня есть ощущение, что это связано с моим использованием np.vectorize, который я использовал, потому что я не знаю другого способа заставить функцию, работающую на pandas df, принимать несколько аргументов (моя функция get_match_rating - см. Ниже - принимает три аргумента).
match_fil3 - это имя кадра данных.Все функции, которые я использую, очень просты (всего одна или две строки очень простых математических выражений).Вот почему я думаю, что это проблема np.vectorize - есть ли более быстрый / более питонский способ достижения этого?
for i in range(0, len(matches_fil3)):
matches_fil3.loc[i, 'P1Est'] = np.vectorize(get_estimate)(matches_fil3['Player One'].iloc[i], i)
matches_fil3.loc[i, 'P1Err'] = np.vectorize(get_error)(matches_fil3['Player One'].iloc[i], i)
matches_fil3.loc[i, 'P2Est'] = np.vectorize(get_estimate)(matches_fil3['Player Two'].iloc[i], i)
matches_fil3.loc[i, 'P2Err'] = np.vectorize(get_error)(matches_fil3['Player Two'].iloc[i], i)
matches_fil3.loc[i, 'P1Rat'] = np.vectorize(get_match_rating)(matches_fil3['P1 Frames Won'].iloc[i], matches_fil3['Total'].iloc[i], matches_fil3['P1Exp'].iloc[i])
matches_fil3.loc[i, 'P2Rat'] = np.vectorize(get_match_rating)(matches_fil3['P2 Frames Won'].iloc[i], matches_fil3['Total'].iloc[i], matches_fil3['P2Exp'].iloc[i])