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!
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
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
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'
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'