No busques más por todo internet ya que estás al lugar justo, poseemos la respuesta que deseas sin liarte.
Solución:
Supongo que estás usando pandas
entonces puedes usar numpy.where
que es una versión vectorizada de si / máscon la condición construida por 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
Esto también funciona:
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'
La solución actual se comporta incorrectamente si su df contiene valores de NaN. En ese caso, recomiendo usar el siguiente código que funcionó para mí
temp=df.Activity.fillna("0")
df['Activity_2'] = pd.np.where(temp.str.contains("0"),"None",
pd.np.where(temp.str.contains("email"), "email",
pd.np.where(temp.str.contains("conference"), "conference",
pd.np.where(temp.str.contains("call"), "call", "task"))))
Reseñas y calificaciones de la guía
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)