Как узнать, сколько раз максимальное значение встречается в пандах? - PullRequest
0 голосов
/ 29 июня 2018

Мне было интересно, как решить следующую проблему в пандах:

У меня есть фрейм данных с количеством строк, имеющих разные значения, и я хотел бы узнать, как часто наибольшее значение встречается в строке. Я использовал df2 ['MAX_Value'] = df2.max (axis = 1), чтобы получить наибольшее значение в строке.

Это пример моего фрейма данных:

Col1 Col2 Col3 Col4 Col5 Col6 MAX_Value 
0      5   6    6    6    3     6

Спасибо!

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Если я правильно понимаю ваш квест:

Поскольку у вас уже есть столбец MAX_value, вы можете просто сделать:

df2.MAX_value.value_counts()

Дайте мне знать, если это то, что вы ищете! :)

0 голосов
/ 29 июня 2018

Вы также можете просто использовать простую группу:

df2.groupby('MAX_Value').Col1.count()
0 голосов
/ 29 июня 2018

Используйте 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
...