pandas 查找与聚类标签对应的聚类编号

wooyq4lh  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(184)

根据聚类结果,我得到以下数据:

timestamp  consumption  cluster_number
0           0    35.666667               1
1           1    29.352222               1
2           2    24.430000               1
3           3    21.756667               1
4           4    20.345556               1
5           5    19.763333               1
6           6    19.874444               1
7           7    22.078889               1
8           8    28.608889               1
9           9    33.827778               2
10         10    36.414444               2
11         11    38.340000               2
12         12    43.305556               2
13         13    43.034444               2
14         14    39.076667               2
15         15    36.378889               2
16         16    36.171111               2
17         17    40.381111               2
18         18    48.692222               0
19         19    52.330000               0
20         20    50.154444               0
21         21    46.491111               0
22         22    44.014444               0
23         23    40.628889               0

通过这种聚类,最大值(且值接近最大值)的列consumptioncluster_number中的0,最小值(以及接近最小值的值)的值在cluster_number 1中,其余的值在cluster_number 2中。但是,我无法事先知道哪些“消耗”值对应于哪些cluster_number,因此我需要找到一种方法,首先将cluster_number与高、低和中产阶级联系起来,然后为每个集群列出timestamp列。
具体来说,我想列出三个清单:
1.高电平= [18、19、20、21、22、23]
1.低电平= [0、1、2、3、4、5、6、7、8]
1.中间值= [9、10、11、12、13、14、15、16、17、18]
你知道我该怎么做吗?

0x6upsns

0x6upsns1#

你可以使用groupby.min + rank来标识簇的顺序,然后对索引groupby.agg并使用簇的顺序进行重命名:

order = ['low', 'middle', 'high']

g = df.reset_index().groupby('cluster_number')
mapper = (g['consumption'].min() # min for the demo, you can use any function mean/sum/…
          .rank(method='dense')
          .map(dict(enumerate(order, start=1)))
         )
out = g['index'].agg(list).rename(mapper)

输出量:

cluster_number
high                 [18, 19, 20, 21, 22, 23]
low               [0, 1, 2, 3, 4, 5, 6, 7, 8]
middle    [9, 10, 11, 12, 13, 14, 15, 16, 17]
Name: index, dtype: object

相关问题