这是我的代码,我想知道是否可以使用列表理解来执行相同的操作(计算 行 中的簇并输出长度为 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)
数据框看起来像
最佳答案
你想要这个吗?
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。测试
关于python - 列表理解的多个条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67300601/