Python Pandas eliminando la subcadena usando otra columna
He intentado buscar y no puedo encontrar una manera fácil de hacerlo, así que espero que su experiencia pueda ayudar.
Tengo un marco de datos de pandas con dos columnas.
import numpy as np
import pandas as pd
pd.options.display.width = 1000
testing = pd.DataFrame({'NAME':[
'FIRST', np.nan, 'NAME2', 'NAME3',
'NAME4', 'NAME5', 'NAME6'], 'FULL_NAME':['FIRST LAST', np.nan, 'FIRST LAST', 'FIRST NAME3', 'FIRST NAME4 LAST', 'ANOTHER NAME', 'LAST NAME']})
lo que me da
FULL_NAME NAME
0 FIRST LAST FIRST
1 NaN NaN
2 FIRST LAST NAME2
3 FIRST NAME3 NAME3
4 FIRST NAME4 LAST NAME4
5 ANOTHER NAME NAME5
6 LAST NAME NAME6
lo que me gustaría hacer es tomar los valores de la columna 'NOMBRE' y eliminarlos de la columna 'NOMBRE COMPLETO' si está allí. Entonces la función volvería
FULL_NAME NAME NEW
0 FIRST LAST FIRST LAST
1 NaN NaN NaN
2 FIRST LAST NAME2 FIRST LAST
3 FIRST NAME3 NAME3 FIRST
4 FIRST NAME4 LAST NAME4 FIRST LAST
5 ANOTHER NAME NAME5 ANOTHER NAME
6 LAST NAME NAME6 LAST NAME
Hasta ahora, he definido una función a continuación y estoy usando el método de aplicación. Sin embargo, esto funciona bastante lento en mi gran conjunto de datos y espero que haya una manera más eficiente de hacerlo. ¡Gracias!
def address_remove(x):
try:
newADDR1 = re.sub(x['NAME'], '', x[-1])
newADDR1 = newADDR1.rstrip()
newADDR1 = newADDR1.lstrip()
return newADDR1
except:
return x[-1]