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.

Uniendo dos DataFrame utilizando un rango de columnas (Derecho en ID e izquierdo en múltiples IDs)

Quiero crear un conjunto de datos utilizando dos df usando el id. El problema es que en el segundo df, el id no se encuentra en una única columna. El valor del id puede estar ubicado en diferentes columnas.

merged=pd.merge(df1, df2, left_on=[‘id’,’month’,’year’], right_on=[‘id_name’,’id_surname’,’id_first_name’, month’,’year’], how=”left”)

Todas las variables de identificación son alfanuméricas.

Pero recibo el error:

ValueError: len(right_on) must equal len(left_on)

Idealmente, me gustaría probar si el id está en una de las otras tres columnas de ids, y fusionar según esa columna. Tal vez algún tipo de función vlookup() (de Excel) para permitir buscar un valor clave dentro de un rango en una matriz de tabla. ¿Alguna idea?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Se puede utilizar la función pd.merge() para unir dos dataframes basados en una columna común. En este caso, se pueden utilizar los parámetros left_on y right_on para especificar las columnas que deben ser utilizadas para la unión. Dado que el valor id se encuentra en diferentes columnas en el segundo dataframe, se pueden especificar varias columnas en el parámetro right_on. Por ejemplo:

    merged = pd.merge(df1, df2, left_on=['id'], right_on=['id_name', 'id_surname', 'id_first_name', 'month', 'year'], how="left")
    

    Esto unirá los dos dataframes basados en la columna id en el primer dataframe y las otras tres columnas id en el segundo dataframe.

Comments are closed.