Skip to main content
 首页 » 编程设计

python之根据其他 2 列确定列值

2025年05月04日15dudu

有 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