Есть ли эквивалент DataFrame.idxmax, когда DataFrame содержит строку? - PullRequest
0 голосов
/ 21 июня 2020

Я использую pandas для чтения простого CSV-файла с результатами выборов:

constituency,anug,apnuafc,cg,ljp,pppc,...
Barima-Waini,0,3905,0,170,8022,...
Pomeroon-Supenaam,86,7343,149,120,18788,...
Essequibo Islands-West Demerara,310,23811,318,0,47855,...
...

Я открываю его с помощью election.votes в views.py:

results = pd.read_csv(election.votes)

Для каждой строки я хочу добавить новый столбец для победившей стороны. Я пробовал:

results["winner"] = results.max(axis=1)

Но это добавляет самое высокое значение , а не соответствующий заголовок столбца. Итак, я пробовал:

results["winner"] = results.idxmax(axis=1)

Затем я получаю сообщение об ошибке reduction operation 'argmax' not allowed for this dtype.

Из-за строк в округах я не могу использовать to_numeric для создания idxmax работать.

Есть ли другой эффективный способ получить заголовок столбца?

1 Ответ

4 голосов
/ 21 июня 2020

Используйте DataFrame.select_dtypes для получения только числовых c столбцов:

import numpy as np

results["winner"] = results.select_dtypes(np.number).idxmax(axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...