#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]
является ли группа номерами