Untitled
unknown
python
2 years ago
1.7 kB
12
Indexable
# Diccionario con las listas de columnas de cada dataset a mergear
COLUMNS_TO_AGG = {
'cesiones': lista_cols_cesiones,
'grafo': lista_cols_grafo,
'preCompras': lista_cols_preCompras,
'preVentas': lista_cols_preVentas,
'compras': lista_cols_compras,
'ventas': lista_cols_ventas,
'mp': lista_cols_mp,
'payerConcent': lista_cols_payerConcent,
'supplierConcent': lista_cols_supplierConcent,
'super': lista_cols_super
}
def merge_dataframes(df1, df2, merge_with, merge_on='identifier'):
'''Merge 2 pandas dataframes, with the caveat that the second one could be empty.
Args:
- df1, df2 (pd.DataFrame): dataframes to merge.
- merge_on (str): merge column.
Returns:
- merged_df (pd.DataFrame).
'''
if df2 is None:
# Si te viene None, agrega las columnas del df2 al df1 con valores nulos.
for column in COLUMNS_TO_AGG[merge_with]:
if column != merge_on: # sin la columna 'identifier'
df1[column] = None
else: # Si df2 no está vacío, realiza el LEFT JOIN normalmente.
df1 = pd.merge(df1, df2, on=merge_on, how='left')
return df1
# diccionario con el dataframe y su nombre (para buscar sus cols en el otro diccionario)
dfs_to_merge = {
'cesiones': df_cesiones,
'grafo': df_grafo,
'preCompras': df_mi_perCompras,
'preVentas': df_mi_perVentas,
'compras': df_compras,
'ventas': df_ventas,
'mp': df_mp,
'payerConcent': df_payerConcent,
'supplierConcent': df_supplierConcent,
'super': df_super
}
for dataset_name, df_to_merge in dfs_to_merge.items():
dataset = merge_dataframes(df1=dataset, df2=df_to_merge, merge_with=dataset_name)Editor is loading...