Verificar si una subcadena está presente en una cadena en un DataFrame diferente. Si es así, devolver el valor de otra fila.
Quiero comprobar si una subcadena de DF1 está en DF2. Si lo está, quiero devolver el valor de una fila correspondiente.
DF1
Nombre | ID | Región |
---|---|---|
John | AAA | A |
John | AAA | B |
Pat | CCC | C |
Sandra | CCC | D |
Paul | DD | E |
Sandra | R9D | F |
Mia | dfg4 | G |
Kim | asfdh5 | H |
Louise | 45gh | I |
DF2
Nombre | ID | Empresa |
---|---|---|
John | AAAxx1 | Microsoft |
John | AAAxxREG1 | Microsoft |
Michael | BBBER4 | Microsoft |
Pat | CCCERG | Dell |
Pat | CCCERGG | Dell |
Paul | DFHDHF |
Salida Deseada
Quiero crear una nueva columna en DF1 que coincida con la empresa, donde el ID de DF1 esté en la columna de ID de DF2.
Nombre | ID | Región | Empresa |
---|---|---|---|
John | AAA | A | Microsoft |
John | AAA | B | Microsoft |
Pat | CCC | C | Dell |
Sandra | CCC | D | |
Paul | DD | E | |
Sandra | R9D | F | |
Mia | dfg4 | G | |
Kim | asfdh5 | H | |
Louise | 45gh | I |
Tengo el siguiente código que determina si el ID de DF1 está en DF2, sin embargo, no estoy seguro de cómo puedo incluir el nombre de la empresa.
DF1['Obtener empresa'] = np.in1d(DF1['ID'], DF2['ID'])
davy.ai
Para obtener el resultado deseado, podemos utilizar el método
isin()
en pandas. Podemos seleccionar DF2 en función de si los IDs están presentes en DF1 y extraer el nombre de la empresa correspondiente. Luego podemos combinar el dataframe resultante con DF1 para obtener el resultado deseado.El código para lograr el resultado deseado es el siguiente:
Esto agregará una nueva columna ‘Company’ a DF1 que contiene el nombre de la empresa correspondiente si el ID está presente en DF2, de lo contrario, contendrá NaN.