Функция для создания кластера на основе двух уникальных значений столбцов pandas

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных, который мне нужен для создания «кластерного индекса» на основе комбинаций пар из двух столбцов. Если есть две комбинации чисел, он должен получить свой собственный идентификатор кластера в новом, третьем столбце. Любая помощь по этому вопросу была бы весьма признательна, поскольку я уверен, что есть способ сделать это в pandas, просто еще не понял этого.

 #input dataframe
d = {'col1': [1,2,3,4,4,5,5,5,8,8], 'col2': [3,4,7,13,13,2,2,2,7,7]}
df = pd.DataFrame(data=d)
df
 

Я ищу какую-то функцию, которая создает вывод, подобный этому:

 #expected output dataframe
d = {'col1': [1,2,3,4,4,5,5,5,8,8], 'col2': [3,4,7,13,13,2,2,2,7,7],'cluster':[0,1,2,3,3,4,4,4,5,5]}
df_cluster = pd.DataFrame(data=d)
df_cluster
 

Комментарии:

1. col1 а col2 также изменился в df_cluster. это ожидаемо?

2. @ggaurav спасибо, что указали на это. Я все исправил. Нет, col1 и col2 должны быть одинаковыми, и единственное, что должно произойти, — это создание третьего столбца.

Ответ №1:

Вы можете использовать group_info grouper объект

 df['cluster'] = df.groupby(['col1', 'col2']).grouper.group_info[0]
df
 

введите описание изображения здесь

Комментарии:

1. Идеальный. Интересно, раньше я не использовал эти методы. Почему group_info[0]?

2. group_info является кортежем и имеет другие детали, такие как отсутствие групп. group_info[0] является ли группа номерами