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.

Pandas: ¿Cómo fusionar fácilmente un dataframe con muchos otros dataframes en diferentes claves?

Digamos que tengo un DataFrame ‘base’ con columnas codificadas y muchas tablas de mapeo, cada una de ellas incluye un diccionario para una columna codificada del DataFrame base, por ejemplo

DataFrame base: df

RETAILER    STATE_CODE  SIZE_CODE   POTENTIAL_CODE
store1      1           008         222
store2      2           001         111
store3      3           006         333

Tabla de mapeo 1: mp_df1

STATE_CODE STATE_NAME
1          California
2          Nevada
3          Washington

Tabla de mapeo 2: mp_df2

SIZE_CODE SIZE_NAME
001       Pequeño
006       Moderado
008       Grande

Tabla de mapeo 3: mp_df3

POTENTIAL_CODE POTENTIAL_NAME
111            Pequeño
222            Moderado
333            Prometedor

Entonces, la tabla base tiene una clave separada para cada una de las tablas de mapeo.

En este caso, puedo usar 3 fusiones, pero en la vida real tengo más de 3 tablas de mapeo, por lo que es realmente molesto hacerlo “manualmente”. ¿Existe una forma más sencilla de combinar estos DataFrames en uno solo?

RETAILER    STATE_CODE  SIZE_CODE   POTENTIAL_CODE STATE_NAME SIZE_NAME POTENTIAL_NAME
store1      1           008         222            California Grande     Moderado
store2      2           001         111            Nevada     Pequeño     Pequeño
store3      3           006         333            Washington Moderado  Prometedor
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera más sencilla de combinar estos dataframes usando la función merge en pandas.

    Aquí está el código que puedes usar para combinar los cuatro dataframes:

    merged_df = df.merge(mp_df1, on='STATE_CODE').merge(mp_df2, on='SIZE_CODE').merge(mp_df3, on='POTENTIAL_CODE')
    

    Este código realiza cuatro fusiones separadas, una para cada tabla de mapeo, y las combina en un solo dataframe merged_df utilizando la función merge. También especifica en qué columnas realizar la fusión utilizando el parámetro on.

    Después de combinar los cuatro dataframes, merged_df tendrá la estructura deseada:

    RETAILER    STATE_CODE  SIZE_CODE   POTENTIAL_CODE STATE_NAME SIZE_NAME POTENTIAL_NAME
    tienda1     1           008         222            California Grande     Moderado  
    tienda2     2           001         111            Nevada     Pequeño   Pequeño
    tienda3     3           006         333            Washington Moderado  Prometedor
    

    Este enfoque se puede aplicar fácilmente para combinar un número arbitrario de tablas de mapeo con el dataframe base.

Comments are closed.