Для следующего кадра данных

df = pd.DataFrame({"a": [1, 0, 11], "b": [7, 0, 0], "c": [0,10,0], "d": [1,0,0],
                   "e": [0,0,0], "name":["b","c","a"]})

print(df)
    a  b   c  d  e name
0   1  7   0  1  0    b
1   0  0  10  0  0    c
2  11  0   0  0  0    a

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

Например. в таком случае:

a  b  c d e name
11 7 10 1 0    a

Как это можно сделать?

0
user9098935 23 Окт 2018 в 10:25

2 ответа

Лучший ответ

Сначала получите максимальные значения для одной строки DataFrame с помощью {{X0 }} to_frame и транспонировать с помощью T, а затем получить name максимального значения для каждого фрейма данных с помощью idxmax:

a = df.max().to_frame().T
a.loc[0, 'name'] = df.set_index('name').max(axis=1).idxmax()

print (a)
    a  b   c  d  e name
0  11  7  10  1  0    a

Деталь:

print (df.set_index('name').max(axis=1))
name
b     7
c    10
a    11
dtype: int64

print (df.set_index('name').max(axis=1).idxmax())
a
0
jezrael 23 Окт 2018 в 07:35

Используйте df.max() и создайте a Dataframe и Transpose так как:

pd.DataFrame(df.max()).T

    a  b   c  d  e name
0  11  7  10  1  0    c
0
Sandeep Kadapa 23 Окт 2018 в 07:28
52943355