Пытаетесь дважды использовать функцию groupby, а затем найти максимальное значение?

#python #pandas

Вопрос:

У меня есть данные о выборах с 1976 по 2020 год, и я пытаюсь найти партию, которая победила в каждом штате индивидуально за каждый год. То есть я ищу победителя Алабамы 1976 года (например, республиканца, демократа и т. Д.). Кроме того, в кадре данных у меня есть голоса по кандидатам и общее количество голосов. Поэтому я пытаюсь извлечь каждого победителя, сгруппировав по штатам, сгруппировав по годам, затем набрав максимальное количество голосов, чтобы найти победителя и удалить все остальное. (таким образом, окончательный df должен содержать 240 пунктов). Возможно ли это вообще? Вот мой код на данный момент: В котором я получаю ключевую ошибку: состояние.

Это не проблема с капитализацией, и есть столбец с надписью «состояние», поэтому я не уверен, что делаю неправильно.

 import matplotlib import pandas as pd # import the pandas library to read a .csv file import numpy as np # use py for numpy from now on import seaborn as sns data = pd.read_csv('1976-2020-president.csv') winner = data.groupby('year').groupby('state').max['totalvotes']  

Комментарии:

1. победитель = data.groupby([«год»,»штат»]). макс[«всего голосов»]

2. О, это все исправило! Следующий вопрос: у меня есть еще одна колонка под названием «party_simplified», которую я хочу отображать при ее запуске (чтобы я знал, какая политическая партия выиграла в каждом штате). Как мне его включить? Я попытался добавить его с указанием года и штата, но затем я просто получил все данные, а не только максимальное значение (он же победитель).

Ответ №1:

Вы можете использовать следующий фрагмент кода для группировки по year и state , а затем найти max значение totalvotes :

 winner = data.groupby(['year','state'])['totalvotes'].max()