Я пытаюсь вычислить среднее значение для столбца, используя группу данных, и получаю неверный результат. Я примерно знаю, почему он это делает, я просто не знаю, как это исправить. Я пытаюсь получить среднюю игру противника команды - прямо сейчас, он рассчитывает правильно, но ставит его в неправильный ряд. Например, в Грин Бэй играли Чикаго и Миннесота - их соперники в среднем пробежали 62,5 игры. Чикаго играл Грин Бэй и Денвер, которые в среднем провели 66,5 пьес. Поэтому, в моем примере, противники Чикаго за игру должны быть 66,5, а ГБ - 62,5. К сожалению, это наоборот. Я думаю, что это группировка по защите и запись среднего значения в первый ряд, который в данном случае фактически является их противником. Это сложно объяснить, поэтому я прилагаю изображения, чтобы показать, что происходит.
Я также знаю, что, вероятно, могу написать функцию в отличие от структуры кода сейчас, и это, вероятно, будет моей задачей завтра, но на данный момент здесь есть код.
import pandas as pd
import os
import time
import numpy as np
beginningTime = time.time()
dfTeam = pd.read_csv("TEAM.csv")
dfSchedule = pd.read_csv("SCHEDULE.csv")
dfTandS = pd.merge(dfTeam, dfSchedule, on='gid', how='inner')
dfTandS['Defense'] = np.where(dfTandS.tname == dfTandS.v, dfTandS.h, dfTandS.v)
dfTandS.to_excel("Team and Schedule.xlsx", index=False)
dfTeamRankings = pd.read_excel("Team Rankings.xlsx")
dfTandS['Total Plays'] = dfTandS['ra'] + dfTandS['pa'] + dfTandS['sk']
dfTandS['Passing Plays'] = dfTandS['pa'] + dfTandS['sk']
dfTeamRankings['Plays Per Game'] = dfTandS.groupby('tname')['Total Plays'].transform('mean')
dfTeamRankings['Rank - Plays Per Game'] = dfTeamRankings['Plays Per Game'].rank(ascending=False, method='min')
Это где он работает не совсем правильно
dfTeamRankings['Opponent Plays Per Game'] = dfTandS.groupby('Defense')['Total Plays'].transform('mean')
dfTeamRankings['Rank - Opponent Plays Per Game'] = dfTeamRankings['Opponent Plays Per Game'].rank(ascending=False, method='min')
dfTeamRankings['Passing Plays Per Game'] = dfTandS.groupby('tname')['Passing Plays'].transform('mean')
dfTeamRankings['Rank - Passing Plays Per Game'] = dfTeamRankings['Passing Plays Per Game'].rank(ascending=False, method='min')
dfTeamRankings['Rushing Plays Per Game'] = dfTandS.groupby('tname')['ra'].transform('mean')
dfTeamRankings['Rank - Rushing Plays Per Game'] = dfTeamRankings['Rushing Plays Per Game'].rank(ascending=False, method='min')
dfTeamRankings.to_excel('Team Rankings.xlsx', index=False)
![Structure of initial data](https://i.stack.imgur.com/OydVa.jpg)
![Improper Output as numbers are flipped between the two teams](https://i.stack.imgur.com/1Hq88.jpg)