Reemplazar valores en la columna de marco de datos si la segunda columna coincide con una lista dada de pandas

dward4

Tengo el siguiente marco de datos

      col1          col2
0     str9          val1
1     str8          val2
2     str4          val3
3     str2          val4
4  unknown1    asdvstr1df
5  random1  teststr2test

y la siguiente lista

strings = ['str1', 'str2', 'str3', 'str4']

Quiero reemplazar el valor en la columna 1 si hay una coincidencia en cualquier punto de la cadena en la columna dos con la lista dada, cadenas.

Nota: col2 puede tener los valores de la lista 'cadena' dentro de la cadena, o también en cualquier extremo.

Actualmente estoy haciendo esto con un bucle anidado lento y feo:

import pandas as pd

data_file = pd.DataFrame(data = ([['str9', 'val1'], ['str8',  'val2'], ['str4','val3'] , ['str2', 'val4'] , ['unknown', 'asdvstr1df'] , ['unknown', 'teststr2test']] ), columns = (['col1', 'col2']), dtype = str)
strings = ['str1', 'str2', 'str3', 'str4']

for value in range(data_file.shape[0]):
    for text in strings:
        if (str(data_file.col2[value]).find(text) != -1):
            data_file.loc[value, 'col1'] = text

No estoy seguro de cómo mejorar este lento proceso. ¿Cómo puedo hacer que esto se ejecute más rápido que el tiempo actual de O (nm) (n es el tamaño del archivo de datos, m es el tamaño de la lista llamada cadenas)?

La salida debe ser:

   col1          col2
0  str9          val1
1  str8          val2
2  str4          val3
3  str2          val4
4  str1    asdvstr1df
5  str2  teststr2test
Scott Boston

Damon;

x = '(' + '|'.join(strings)+ ')'
df.assign(col1 = df.col2.str.extract(x, expand=False).combine_first(df.col1))

Salida:

   col1          col2
0  str9          val1
1  str8          val2
2  str4          val3
3  str2          val4
4  str1    asdvstr1df
5  str2  teststr2test

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Reemplazar valores en la columna con valores de columna de otro marco de datos en Python

Reemplazar valores en la columna con valores de columna de otro marco de datos en Python

Cambiar el marco de datos de la columna de valores de Nan si coincide con la lista

Cómo reemplazar un elemento en una lista con una columna de marco de datos si la columna contiene el elemento

Cómo reemplazar un elemento en una lista con una columna de marco de datos si la columna contiene el elemento

verifique si una lista de cadenas está en la columna de marco de datos de pandas

verifique si una lista de cadenas está en la columna de marco de datos de pandas

¿Cómo reemplazar valores en una columna si la columna es una lista de valores?

Cómo reemplazar los nombres de las columnas si coinciden con los valores de una columna con los valores de la columna de otro marco de datos

Cómo reemplazar los nombres de las columnas si coinciden con los valores de una columna con los valores de la columna de otro marco de datos

Comprobación de valores únicos en la columna del marco de datos de Pandas y referencia cruzada con una segunda columna

Llene una columna de marco de datos con una lista de valores si la condición no se cumple en función de alguna otra columna

SI el valor de la columna en el marco de datos coincide con el cambio de lista a otro valor

Python crea una columna de valores repetidos que coincide con la longitud del marco de datos

Cómo reemplazar la columna A con la columna B en el marco de datos de pandas omitiendo los valores vacíos en la columna B

Reemplazar todos los valores de una columna en el marco de datos con pandas

cómo devolver un marco de datos si una de las filas en la columna coincide con cierto valor

Reemplazar ciertas filas del marco de datos con valores, en una columna específica, en Pandas

Reemplazar ciertas filas del marco de datos con valores, en una columna específica, en Pandas

Ordene / alinee las columnas del marco de datos para que los valores de la cadena de fila coincidan con la columna de la lista maestra, si no coincide en la columna imprima 0

teclas de diccionario para reemplazar cadenas en la columna de marco de datos de pandas con valores de diccionario y realizar una evaluación

Reemplazar una secuencia en la columna del marco de datos

Cómo modificar el valor de la cadena en una columna dada y crear una columna diferente con ella en el marco de datos de pandas

No se pueden reemplazar los valores en la columna del marco de datos de pandas con el mapa

No se pueden reemplazar los valores en la columna del marco de datos de pandas con el mapa

Pandas Fusiona datos de fila con varios valores en la lista de Python para una columna

Reemplazar valores de una columna en el marco de datos

cómo reemplazar valores en la columna de marco de datos dependiendo de otra columna

Verifique si los valores en la columna del marco de datos de pandas son enteros y escríbalos en una lista si no

TOP Lista

CalienteEtiquetas

Archivo