Как найти наиболее частую комбинацию из двух столбцов в кадре данных в Python - PullRequest
0 голосов
/ 29 октября 2018

У меня есть данные в фрейме данных панд следующим образом:

df = pd.DataFrame({'a':[1,2,3,3,4,4,4], 'b':[2,3,4,4,5,5,5]})

Итак, фрейм данных выглядит так:

   a  b
0  1  2
1  2  3
2  3  4
3  3  4
4  4  5
5  4  5
6  4  5

Комбинации столбцов «a», «b» здесь: 12 (1), 23 (1), 34 (2), 45 (3). Я пытаюсь выбрать 4 и 5 и распечатать их, потому что их комбинация большинство случаев (3 раза).

Мой код:

counts = df.groupby(['a','b']).size().sort_values(ascending=False)
print(counts)

Выход:

a  b
4  5    3
3  4    2
2  3    1
1  2    1
dtype: int64

Но это только дает мне столбец [3,2,1,1]. Это количество комбинаций чисел. Как я могу получить доступ к элементам 4 и 5 по отдельности, чтобы я мог их распечатать?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Используя idxmax, даже если результат не соответствует порядку, вы все равно можете найти индекс максимального значения

df.groupby(['a','b']).size().idxmax()
Out[15]: (4, 5)
0 голосов
/ 29 октября 2018

Самый простой в использовании режим в пандах DataFrame.Это даст наиболее частые значения по строкам или столбцам:

>>> df
   a  b
0  1  2
1  2  3
2  3  4
3  3  4
4  4  5
5  4  5
6  4  5

>>> df.mode()
   a  b
0  4  5
0 голосов
/ 29 октября 2018

Панды GroupBy объекты индексируются ключом (ами) группировщика. В случае нескольких ключей это будет означать MultiIndex. Вы можете просто извлечь первый индекс вашего результата, чтобы получить tuple, представляющее наиболее распространенную комбинацию:

counts.index[0]  # (4, 5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...