Как сделать цикл с условием на все взаимодействия? - PullRequest
0 голосов
/ 02 мая 2019

У меня есть следующий фрейм данных:

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

1 Ответ

1 голос
/ 02 мая 2019

Я устал от использования transform и any, как показано ниже

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...