python - 关于列表理解的多个条件语句
问题描述
所以这是我的代码,我想知道我是否可以使用列表推导来执行相同的操作(计算行内的集群并输出长度列表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 |
解决方案
你想要这个吗?
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。去测试
推荐阅读
- javascript - 将字符串替换为 3 种模式“space”、“and”、“or”
- jquery - 仅在鼠标悬停 2 次后显示图像?
- scala - hive 1.1 从三个表中取出层次值
- sql - 需要一些帮助来解决分组的 SQL 问题
- angular - angular 6: A class declaration without the 'default' modifier must have a name
- excel - 无法在 Listbox.RowSource 方法或 Listbox.List 方法中设置范围
- matplotlib - move facial landmarks using matplotlib
- tomcat - 向 tomcat 7.0.82 HTTP 连接器添加松弛查询字符会生成不匹配的属性警告
- amazon-web-services - AWS ECS scheduled scaling with terraform
- deep-learning - Why Softmax is not selecting with maximum probability?