Python: Суммируйте значения в столбце 1, если предыдущие значения в столбце 2 равны значению в столбце 3 в каждой строке - PullRequest
0 голосов
/ 30 октября 2019

Мои данные находятся в формате CSV, как это

ID  Date    Year    Home Team   Away Team   HP  AP
1   09/02   1966    Miami       Oakland     14  23
2   09/03   1966    Houston     Denver      45  7
3   09/10   1966    Oakland     Houston     31  0
4   09/27   1966    Houston     Oakland     18  10
5   10/20   1966    Oakland     Houston     21  18

В каждой строке я хочу суммировать ранее накопленные очки хозяев и гостей как для домашней, так и для выездной команды.

Я использовал групповых панд, чтобы получить домашние очки для домашней команды и выездные очки для команды гостей, как показано ниже

df1['HT_HP']=df1.groupby('Home Team')['HP'].apply(lambda x : x.shift().cumsum())

Но я не могу сделать это, чтобы получитьранее набранные очки для хозяев поля и ранее забитые очки хозяев поля для гостей.

так что для первой игры Окленд Хьюстон будет столбец с Оклендом в 23 очка на выезде и отдельный столбец для 45 домашних очков Хьюстона

Expected outcome:
ID  Date    Year    Home Team   Away Team   HP  AP  HT_AP  AT_HP
1   09/02   1966    Miami       Oakland     14  23  NaN    NaN
2   09/03   1966    Houston     Denver      45  7   NaN    NaN
3   09/10   1966    Oakland     Houston     31  0   23     45
4   09/27   1966    Houston     Oakland     18  10  0      31
5   10/20   1966    Oakland     Houston     21  18  33     63

Я пробовал это

df1['HT_AGS'] = df1.where(df1['AwayTeam']==df1['HomeTeam']).groupby('HomeTeam')['FTHG'].apply(lambda x : x.shift().cumsum())

Возвращает полный столбец значений NaN

В Excel это будет что-то похожее на sumifs (F1: F3, D1: D3, E4)

...