Untitled
python
2 months ago
1.7 kB
3
Indexable
Never
# 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)