Используйте assign
с сопоставлением по eq
и sum
в строках:
max_val = df2.max(axis=1)
count_max = df2.eq(max_val, axis=0).sum(axis=1)
Для повышения производительности возможно использование numpy
:
arr = df2.values
max_val = arr.max(axis=1)
count_max = (arr == max_val[:, None]).sum(axis=1)
df = df2.assign(MAX_Value = max_val, No = count_max)
print (df)
Col1 Col2 Col3 Col4 Col5 Col6 MAX_Value No
0 0 5 6 6 6 3 6 3
Деталь
print (df2.eq(max_val, axis=0))
Col1 Col2 Col3 Col4 Col5 Col6
0 False False True True True False