Я думаю, вам нужно что-то вроде ниже,
Сначала получите значение метки и присвойте его в свой фрейм данных, затем примените группирование по меткам, найдите столбец с уникальным именем (A, B, C) и сохраните результат.
Следующий фрагмент кода демонстрирует вашу проблему.
from sklearn.cluster import KMeans
import numpy as np
import pandas as pd
X = pd.DataFrame([[1, 2,'A'], [1, 4,'A'], [1, 0,'B'],[4, 2,'C'], [4, 4,'C'], [4, 0,'B']])
kmeans = KMeans(n_clusters=2, random_state=0).fit(X[[0,1]])
result= kmeans.labels_
X['label']=result
print X.groupby('label')[2].unique()
Выход:
label
0 [A, B]
1 [C, B]
Для представления Dict,
print X.groupby('label')[2].unique().to_dict()
Выход:
{0: array(['A', 'B'], dtype=object), 1: array(['C', 'B'], dtype=object)}
Чтобы получить результат в том же кадре данных, используйте ниже,
X['cluster_name']= X.groupby('label')[2].transform('unique')
Выход:
0 1 2 label cluster_name
0 1 2 A 0 [A, B]
1 1 4 A 0 [A, B]
2 1 0 B 0 [A, B]
3 4 2 C 1 [C, B]
4 4 4 C 1 [C, B]
5 4 0 B 1 [C, B]