Здравствуйте, я пытаюсь решить данную задачу. Она достаточно интересна.
Функция должна получать на вход pandas.DataFrame, как на изображении, а на выходе отдавать победителя выборов.
В задании также указано, что стоит использовать функции .idxmax(), .sort_index(), .groupby()
Но я уже несколько часов не могу её решить...
Идея в том, что тот кандидат, за которого проголосовало большинство избирателей забирает полное значение из колонки electors
Насколько я понял, мне нужно:
1. отгруппировать по штатам
2. отсортировать по имени кандидата
3. найти победителя в каждом штате
4. Затем мне как-то нужно получить количество electors умноженное на "победил ли этот кандидат", по логике "все или ничего"
Вот, как мой код выглядит сейчас:
def winner_votes(df_in):
df = df_in.groupby(['state', 'electors'], sort=False).first()
df.sort_index(axis=1, inplace=True)
df['winner'] = df.idxmax(axis=1)
return df
На выходе получается такой датафрейм:
Я не понимаю, как мне добавить к этому датафрейму колонку "score", я бы хотел в ней разместить нечто вроде df[ df.index == df['winner'] ] * df['electors'], но, конечно, такой подход не работает..