Найти максимальное значение в кадре данных с соответствующим именем столбца и индексом - PullRequest
1 голос
/ 19 марта 2020

Давайте возьмем этот небольшой фрейм данных:

df = pd.DataFrame(dict(Name=['Jason_Fly','Alan_Smith','Steve_Rowland'], Col1=[1,2,3], Col2=[1,3,9],Col3=[5,6,8]))

            Name  Col1  Col2  Col3
0      Jason_Fly     1     1     5
1     Alan_Smith     2     3     6
2  Steve_Rowland     3     9     8

Я хотел бы получить максимальное значение в фрейме данных с именем соответствующего столбца и индексом (или, в идеале, соответствующим значением в столбце Name). ).

Ожидаемый результат:
Максимум: 9
Соответствующий столбец: Col2
Соответствующий индекс: 2 | Соответствующее значение в столбце Имя: Steve_Rowland

Как, пожалуйста, я могу это сделать?

1 Ответ

3 голосов
/ 19 марта 2020

Преобразовать Name столбец в index, поэтому возможно получить первый максимум для столбцов и строк и использовать Series.idxmax:

df1 = df.set_index('Name')

max1 = df1.to_numpy().max()
print (max1)
9

c = df1.max(axis=0).idxmax()
print (c)
Col2

n = df1.max(axis=1).idxmax()
print (n)
Steve_Rowland

Другое решение - получить позицию максимальные значения и индексирование значений первого совпадения:

max1 = df1.to_numpy().max()
print (max1)
9

a,b  = np.where(df1 == max1)
print (a)
[2]

print (b)
[1]

c = df1.columns[b[0]]
print (c)
Col2

n = df1.index[a[0]]
print (n)
Steve_Rowland
...