web-dev-qa-db-fra.com

Conditionnel Si instruction: Si la valeur dans la ligne contient une chaîne ... définissez une autre colonne égale à la chaîne

EDIT MADE: 

La colonne "Activité" est remplie de chaînes et je souhaite obtenir les valeurs de la colonne "Activité_2" à l'aide d'une instruction if. 

Donc Activity_2 affiche le résultat souhaité. Essentiellement, je veux savoir quel type d’activité se produit. 

J'ai essayé de le faire en utilisant mon code ci-dessous mais il ne fonctionnera pas (veuillez voir la capture d'écran ci-dessous pour une erreur) Toute aide est grandement appréciée! 

 enter image description here

    for i in df2['Activity']:
        if i contains 'email':
            df2['Activity_2'] = 'email'
        Elif i contains 'conference'
            df2['Activity_2'] = 'conference'
        Elif i contains 'call'
            df2['Activity_2'] = 'call'
        else:
            df2['Activity_2'] = 'task'


Error: if i contains 'email':
                ^
SyntaxError: invalid syntax
5
PineNuts0

Je suppose que vous utilisez pandas, alors vous pouvez utiliser numpy.where, qui est une version vectorielle de if/else , avec la condition construite par str.contains:

df['Activity_2'] = pd.np.where(df.Activity.str.contains("email"), "email",
                   pd.np.where(df.Activity.str.contains("conference"), "conference",
                   pd.np.where(df.Activity.str.contains("call"), "call", "task")))

df

#   Activity            Activity_2
#0  email personA       email
#1  attend conference   conference
#2  send email          email
#3  call Sam            call
#4  random text         task
#5  random text         task
#6  lwantto call        call
11
Psidom

Cela fonctionne aussi:

df.loc[df['Activity'].str.contains('email'), 'Activity_2'] = 'email'
df.loc[df['Activity'].str.contains('conference'), 'Activity_2'] = 'conference'
df.loc[df['Activity'].str.contains('call'), 'Activity_2'] = 'call'
4
moshfiqur

vous avez une syntaxe non valide pour vérifier les chaînes.

essayez d'utiliser

 for i in df2['Activity']:
        if 'email' in i :
            df2['Activity_2'] = 'email'
0
Prakash Palnati