Estoy tratando de extraer cadenas de un DF en el dataframe de pandas y las cadenas de origen están en una lista de la que tengo que hacer coincidir. Intenté usar un df.str.extract(list1)
pero recibí un error de tipos no transitables, creo que la forma en que comparo la lista con el DF no es correcta
Desde
Col 1 Col 2 1 The date 2 Three has come 3 Mail Sent 4 Done Deal
A
Col 1 Col 2 Col 3 1 The date NaN 2 Three has come Three has 3 Mail Sent Mail 4 Done Deal Done
Mi lista es como abajo
List1 = ['Three has' , 'Mail' , 'Done' , 'Game' , 'Time has come']
Puede utilizar extract
con join
todos los valores en List
por |
lo que significa or
en regex
:
List1 = ['Three has' , 'Mail' , 'Done' , 'Game' , 'Time has come'] df['Col 3'] = df['Col 2'].str.extract("(" + "|".join(List1) +")", expand=False) print (df) Col 1 Col 2 Col 3 0 1 The date NaN 1 2 Three has come Three has 2 3 Mail Sent Mail 3 4 Done Deal Done
Otra solución:
List1 = ['Three has' , 'Mail' , 'Done' , 'Game' , 'Time has come'] df['Col 3'] = df['Col 2'].apply(lambda x: ''.join([L for L in List1 if L in x])) df['Col 3'] = df['Col 3'].mask(df['Col 3'] == '') print (df) Col 1 Col 2 Col 3 0 1 The date NaN 1 2 Three has come Three has 2 3 Mail Sent Mail 3 4 Done Deal Done