列表理解的多个条件语句

Multiple conditional statements on list comprehension

所以这是我的代码,我想知道我是否可以使用列表理解来执行相同的操作(计算 内的簇并输出长度列表 df.shape[0]).相同的簇号至少有两行,但可以更多,并且它们会循环。我试过了,但想不通。 有什么建议吗?

我的代码:

    import pandas as pd

    cluster_global = 0
    cluster_relativo = 0
    cluster_index = []
    for index, row in df.iterrows():
        if row['cluster'] == cluster_relativo:
            cluster_index.append(cluster_global)
        elif row['cluster'] == (cluster_relativo + 1):
            cluster_global += 1
            cluster_relativo += 1
            cluster_index.append(cluster_global)
        elif row['cluster'] == 0:
            cluster_global += 1
            cluster_relativo = 0
            cluster_index.append(cluster_global)

DataFrame 看起来像

index cluster
0 0
1 0
2 1
3 1
4 1
5 2
6 2
7 0
8 0
... ...
n m<40

你想要这个吗?

from itertools import groupby

result = [0 if index == 0 and key == 0
          else index
          for index, (key, group) in enumerate(groupby(my_values))
          for _ in group
          ]

print(result)

通过 - df['cluster'].values 替换列表理解中的 my_values。测试