列表理解的多个条件语句
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。测试
所以这是我的代码,我想知道我是否可以使用列表理解来执行相同的操作(计算 行 内的簇并输出长度列表 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。测试