Моя система
Виндовс 7, 64 бит
питон 3.5.1
Задача
У меня есть кадр данных pandas, и я хотел бы узнать максимальное значение для каждой строки и добавить эту информацию в качестве нового столбца. Я также хотел бы знать имя столбца, в котором находится максимальное значение. И я хотел бы добавить еще один столбец в существующий фрейм данных, содержащий имя столбца, в котором можно найти максимальное значение.
Аналогичный вопрос был задан и дан ответ для R в этот пост.
Воспроизводимый пример
In[1]:
# Make pandas dataframe
df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,0,1,0,1], 'c':[0,0,0,0,0]})
# Calculate max
my_series = df.max(numeric_only=True, axis = 1)
my_series.name = "maxval"
# Include maxval in df
df = df.join(my_series)
df
Out[1]:
a b c maxval
0 1 0 0 1
1 0 0 0 0
2 0 1 0 1
3 1 0 0 1
4 3 1 0 3
Все идет нормально. Теперь для добавьте еще один столбец в существующий фрейм данных, содержащий имя части столбца:
In[2]:
?
?
?
# This is what I'd like to accomplish:
Out[2]:
a b c maxval maxcol
0 1 0 0 1 a
1 0 0 0 0 a,b,c
2 0 1 0 1 b
3 1 0 0 1 a
4 3 1 0 3 a
Обратите внимание, что я хотел бы вернуть все имена столбцов, если несколько столбцов содержат одно и то же максимальное значение. Также обратите внимание, что столбец maxval не включен в maxcol, так как это не имеет особого смысла. Заранее спасибо, если кому-то это покажется интересным.