Простой способ - создать две новые серии, проиндексированные командами:
home = pd.Series(data.HomePoint.values, data.Home)
away = pd.Series(data.AwayPoint.values, data.Away)
Тогда результат, который вы хотите получить:
home.add(away, fill_value=0).astype(int)
Обратите внимание, что home + away
не работает, потому что команда F никогда не отыгрывала, поэтому для них получился бы NaN. Поэтому мы используем Series.add()
с fill_value=0
.
Сложный способ - использовать DataFrame.melt()
:
goo = data.melt(['HomePoint', 'AwayPoint'], var_name='At', value_name='Team')
goo.HomePoint.where(goo.At == 'Home', goo.AwayPoint).groupby(goo.Team).sum()
Или с другой точки зрения:
ooze = data.melt(['Home', 'Away'])
ooze.value.groupby(ooze.Home.where(ooze.variable == 'HomePoint', ooze.Away)).sum()