【问题标题】:Give unique identifiers to clusters containing the same value为包含相同值的集群提供唯一标识符
【发布时间】:2022-07-19 21:08:12
【问题描述】:

假设我有一个包含 1 和 0 的数据框列,我想按值为 1 的集群进行分组。使用 groupby 通常会呈现 2 组、一组 0 和一组 1 .

df = pd.DataFrame([1,1,1,0,0,0,0,1,1,0,0,0,1,0,1,1,1],columns=['clusters'])

print df
    clusters
0          1
1          1
2          1
3          0
4          0
5          0
6          0
7          1
8          1
9          0
10         0
11         0
12         1
13         0
14         1
15         1
16         1

for k, g in df.groupby(by=df.clusters):
    print k, g

0     clusters
3          0
4          0
5          0
6          0
9          0
10         0
11         0
13         0
1     clusters
0          1
1          1
2          1
7          1
8          1
12         1
14         1
15         1
16         1

因此,实际上,我需要为所有 1 的集群创建一个具有唯一标识符的新列:因此我们最终会得到:

       clusters  unique
0          1       1
1          1       1
2          1       1
3          0       0
4          0       0
5          0       0
6          0       0
7          1       2
8          1       2
9          0       0
10         0       0
11         0       0
12         1       3
13         0       0
14         1       4
15         1       4
16         1       4

欢迎任何帮助。谢谢。

【问题讨论】:

    标签: python pandas dataframe python-2.7 group-by


    【解决方案1】:

    让我们做ngroup

    m = df['clusters'].eq(0)
    df['unqiue'] = df.groupby(m.cumsum()[~m]).ngroup() + 1
    

        clusters  unqiue
    0          1       1
    1          1       1
    2          1       1
    3          0       0
    4          0       0
    5          0       0
    6          0       0
    7          1       2
    8          1       2
    9          0       0
    10         0       0
    11         0       0
    12         1       3
    13         0       0
    14         1       4
    15         1       4
    16         1       4
    

    【讨论】:

    • 优秀的 Shubham,感谢您的宝贵时间。
    • @ajsp 编码愉快!
    猜你喜欢
    • 2011-09-23
    • 2020-08-27
    • 1970-01-01
    • 2023-03-06
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    相关资源
    最近更新 更多