有 2 列,Label1 和 Label2。它们都是使用不同方法的聚类标签。
Label1 Label2
0 0 1024
1 1 1024
2 2 1025
3 3 1026
4 3 1027
5 4 1028
我想根据这两列获得最终的集群标签。比较每一行,只要这两个标签中的一个相同,它们就在同一个簇中。
例如:第 0 行和第 1 行有共同的标签 2,第 3 行和第 4 行有共同的标签 1,因此 row0 和 row1 在同一组,row3 和 row4 在同一组。所以我想要的结果是:
Label1 Label2 Cluster ID
0 0 1024 0
1 1 1024 0
2 2 1025 1
3 3 1026 2
4 3 1027 2
5 4 1028 3
最好的方法是什么? 任何帮助将不胜感激。
编辑:我想我没有给出一个很好的例子。实际上,标签不一定按任何顺序排列:
Label1 Label2
0 0 1024
1 1 1023
2 2 1025
3 3 1024
4 3 1027
5 4 1022
请您参考如下方法:
试试这个:使用 np.where 和 pandas.duplicated
df = df.sort_values(['Label1', 'Label2'])
df['Cluster'] = np.where( (df.Label1.duplicated()) | (df.Label2.duplicated()),0,1).cumsum()
print df
Label1 Label2 Cluster
0 0 1024 1
1 1 1024 1
2 2 1025 2
3 3 1026 3
4 3 1027 3
5 4 1028 4
