максимальное значение панды в строке и возвращаемое значение df со значением и именем столбца - PullRequest
2 голосов
/ 26 сентября 2019

У меня есть следующий фрейм данных:

    a    b    c    d    e
    1   .90  .95  .83  .56
   .95  .96  .87  .83  .63
   .83  .87  .83  .95  .81

Как найти максимальное значение для строки и столбца, из которого оно получено, чтобы оно выглядело так:

a   1
b  .96
d  .95

Ответы [ 4 ]

4 голосов
/ 26 сентября 2019

с использованием np.argmax и df.lookup:

s=pd.Series(df.columns[np.argmax(df.values,axis=1)])
final=pd.DataFrame(df.lookup(s.index,s),s)
4 голосов
/ 26 сентября 2019

Попробуйте это:

result = df.max(axis=1)
result.index = df.idxmax(axis=1)
2 голосов
/ 26 сентября 2019

Вы можете использовать функцию idxmax():

import pandas as pd
a = {'a':[100,95,83],'b':[90,96,87],'c':[95,87,83],'d':[83,83,95],'e':[56,63,81]}
df = pd.DataFrame(a)
print(df)

Структура данных выглядит следующим образом:

     a   b   c   d   e
0  100  90  95  83  56
1   95  96  87  83  63
2   83  87  83  95  81

Используя функцию idxmax, мы получаем, к какому столбцу относится максимальное значение для каждой строки:

print(df.idxmax(axis=1))

Вывод:

0    a
1    b
2    d

Объединить его с исходным кадром данных, чтобы получить соответствующее значение, учитывая столбец, которому оно принадлежит.

df_result = pd.concat([df.idxmax(axis=1),df.max(axis=1)],axis=1)
print(df_result)

Выход:

   0    1
0  a  100
1  b   96
2  d   95
1 голос
/ 26 сентября 2019
maxRow = df.idxmax(1)
maxValue = df.max(1)
print(pd.concat([maxRow , maxValue],1))

Переменная maxRow дает идентификатор строки с максимальным значением в кадре данных, 1 для установки оси в строке вместо столбца. Аналогично, maxValue получает maxValues ​​строк pd.concat состоит в том, чтобы сжать эти два списка в фрейм данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...