Используйте DataFrame.idxmax
с DataFrame.assign
для добавления 2 столбцов без вывода друг друга:
df = data.assign(largest=data.max(axis=1), name=data.idxmax(axis=1))
print (df)
A1 A2 A3 A99 largest name
0 3 4 6 11 11 A99
1 1 8 2 1 8 A2
Или DataFrame.agg
:
data[['largest','name']] = data.agg(['max','idxmax'], 1)
print (data)
A1 A2 A3 A99 largest name
0 3 4 6 11 11 A99
1 1 8 2 1 8 A2
РЕДАКТИРОВАТЬ:
Вы можете выбрать только числовые столбцы:
df1 = data.select_dtypes(np.number)
Или преобразовать столбцы в числовые:
df1 = data.astype(int)
Если не работает .astype
, поскольку возможно некоторое нечисловое значение, используйте to_numeric
с errors='coerce'
для преобразования проблемных значений нет NaN
:
df1 = data.apply(lambda x: pd.to_numeric(x, errors='coerce'))
df = data.assign(largest=df1.max(axis=1), name=df1.idxmax(axis=1))