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
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:
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ónmerge
. También especifica en qué columnas realizar la fusión utilizando el parámetroon
.Después de combinar los cuatro dataframes,
merged_df
tendrá la estructura deseada:Este enfoque se puede aplicar fácilmente para combinar un número arbitrario de tablas de mapeo con el dataframe base.