найти максимум в строках датафрейма в конкретных столбцах и записать название столбца в ячейку
есть датафрейм вида:
| index | data | x1 | x2 | x3 | Result |
|---|---|---|---|---|---|
| A | st1 | 4 | 5 | 6 | |
| B | st2 | 3 | 7 | 6 | |
| .. | .. | .. | .. | .. | |
| Z | st500 | 1 | 0 | 8 |
как мне красиво найти максимум по каждой строке A-Z среди столбцов x1-x3 и в столбец Result занести название столбца, в котором найден максимум.
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
При df:
data x1 x2 x3
A str1 76 41 33
B str2 18 82 28
C str3 62 33 48
. . .
X str24 57 66 1
Y str25 10 86 24
Z str26 50 74 58
воспользуйтесь методом idxmax с указанием нужной axis:
df["Result"] = df[["x1", "x2", "x3"]].idxmax(axis=1)
результат будет таким:
data x1 x2 x3 Result
A str1 76 41 33 x1
B str2 18 82 28 x2
C str3 62 33 48 x1
. . .
X str24 57 66 1 x2
Y str25 10 86 24 x2
Z str26 50 74 58 x2
Дополнение:
Если вам нужно найти максимумы в числовых столбцах, а их количество не известно или может меняться, есть более универсальный способ:
import numpy as np
df["Result"] = df.select_dtypes(np.number).idxmax(axis=1)
Результат, понятно, будет тот же.