es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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 Facebook

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'])
Tags:  , ,

Answer

  1. Avatar for 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:

    # Seleccionar DF2 en función de si los IDs están en DF1 y extraer el nombre de la empresa correspondiente
    companies = DF2.loc[DF2['ID'].isin(DF1['ID']), ['ID', 'Company']]
    
    # Combinar el dataframe resultante con DF1 para obtener el resultado deseado
    DF1 = DF1.merge(companies, on='ID', how='left')
    

    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.

Comments are closed.