фильтрация фрейма данных с использованием сравнения между тремя столбцами этого фрейма данных - PullRequest
0 голосов
/ 18 января 2019

Я работаю с фреймом данных, который содержит 1 миллион строк. Я попытался воспроизвести данные как можно проще. Ниже приведен простой фрейм данных.

df = pd.DataFrame()
df['Match'] = ['A Vs B','A Vs B','A Vs B','A Vs B','A Vs B','C Vs D','C Vs D','C Vs D','C Vs D','C Vs D','C Vs D']
df ['Hwin'] = [1,1,1,0,0,0,0,1,0,0,0]
df ['Awin'] = [0,0,0,1,0,1,0,0,0,1,1]
df ['Draw'] = [0,0,0,0,1,0,1,0,1,0,0]

Мой фактический фрейм данных содержит 30 столбцов. Что я хотел сделать следующим образом: Я хочу сохранить только строку для каждого матча, в которой сумма одного из столбцов из HWin Draw Awin больше, чем остальные два столбца. Мой ожидаемый результат следующий:

enter image description here

Как я могу это сделать? Ваш совет очень ценится. Спасибо,

Zep.

1 Ответ

0 голосов
/ 18 января 2019

IIUC нужно groupby + transform, тогда мы делаем строки max и idxmax

s=df.groupby(df.columns.tolist())[['Hwin','Awin','Draw']].transform('sum')
df.loc[s.max(1).groupby(df.Match).idxmax()]
    Match  Hwin  Awin  Draw
0  A Vs B     1     0     0
5  C Vs D     0     1     0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...