Поиск наиболее частой комбинации в DataFrame - PullRequest
3 голосов
/ 03 августа 2020

У меня есть DataFrame с двумя столбцами From и To, и мне нужно знать наиболее частую комбинацию местоположений From и To.

Пример:

From        To
------------------
Home        Office
Home        Office
Home        Office
Airport     Home
Restaurant  Office

Ответы [ 3 ]

2 голосов
/ 03 августа 2020

, если порядок имеет значение:

df['FROM_TO'] = df['FROM'] + df['TO']

df['COUNT'] = 1

df.groupby(['FROM_TO'])['COUNT'].sum()

дает вам все вхождения в одном go. Просто возьмите максимум, чтобы найти наибольшее вхождение.

Если порядок имеет значение, сначала отсортируйте значения перед:

df.loc [:,:] = np.sort (df.values, axis = 1) # если df состоит только из столбцов FROM и TO.

1 голос
/ 03 августа 2020

IIU C, SeriesGroupBy.value_counts и Series.idxmax

df.groupby('From')['To'].value_counts().idxmax()

Выход

('Home', 'Office')

в целом groupby.value_counts быстрее, чем groupby.size

Другой способ:

df.apply(tuple, axis=1).value_counts().idxmax()

Или

df.apply(tuple, axis=1).mode()

Вывод

0    (Home, Office)
dtype: object
1 голос
/ 03 августа 2020

Вы можете сгруппировать по двум столбцам вместе и подсчитать количество вхождений каждой пары, а затем отсортировать пары по этому количеству.

Следующий код выполняет свою работу:

df.groupby(["From", "To"]).size().sort_values(ascending=False)

и, для примера вопроса, он возвращает:

From        To
-----------------------
Home        Office    3
Restaurant  Office    1
Airport     Home      1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...