首页 > 解决方案 > 关于列表理解的多个条件语句

问题描述

所以这是我的代码,我想知道我是否可以使用列表推导来执行相同的操作(计算内的集群并输出长度列表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)

数据框看起来像

指数
0 0
1 0
2 1
3 1
4 1
5 2
6 2
7 0
8 0
... ...
n 米<40

标签: pythonpandaslistlist-comprehension

解决方案


你想要这个吗?

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。去测试


推荐阅读