首页 > 解决方案 > 如何在所有交互中使用条件进行循环?

问题描述

我有以下数据框:

CLUSTER | COLUMN_X
------------------
1       | yes
------------------
1       | no
------------------
2       | yes
------------------
2       | yes
------------------
3       | no
------------------
3       | no

我想遍历集群至少有一行以“是”为值的行。就像是 :

for row in (rows of the clusters for which there is a 'yes'):
    df['OUTPUT'][row] = 'ok'
for row not in (rows of the clusters for which there is a 'yes') :
    df['OUTPUT'][row] = 'not ok'

这是预期的输出:

CLUSTER | COLUMN_X | OUTPUT
-----------------------------
1       | yes      | ok
-----------------------------
1       | no       | ok
-----------------------------
2       | yes      | ok
-----------------------------
2       | yes      | ok
-----------------------------
3       | no       | not ok
-----------------------------
3       | no       | not ok

标签: pythonpandasloopsdataframe

解决方案


我厌倦了使用transformany如下所示

df.COLUMN_X.eq('yes').groupby(df.CLUSTER).transform('any').map({True:'Ok',False:'not ok'})

所以我们尝试一些新的东西isin

s=df.loc[df.COLUMN_X.eq('yes'),'CLUSTER']
df['OUTPUT']='Not Ok'
df.loc[df.CLUSTER.isin(s),'OUTPUT']='ok'
df
Out[1191]: 
   CLUSTER COLUMN_X  OUTPUT
0        1      yes      ok
1        1       no      ok
2        2      yes      ok
3        2      yes      ok
4        3       no  Not Ok
5        3       no  Not Ok

推荐阅读