Programación defensiva por issue: pandas BUG (a veces, el index pierde el tz):
        - issue #7795: concat of objects with the same timezone get reset to UTC;
        - issue #10567: DataFrame combine_first() loses timezone information for datetime columns
            https://github.com/pydata/pandas/issues/10567
    :param tz_ant: TZ de referencia para establecerlo al final si se ha perdido en la operación
    :param func_merge: puntero a función que realiza la operación de merge / join / combine / etc.
    :param args: argumentos para func_merge
    :param kwargs: argumentos para func_merge
    :return: dataframe_merged con TZ anterior

def pdmerge_respeta_tz(func_merge, tz_ant=None, *args, **kwargs):
    """
    Programación defensiva por issue: pandas BUG (a veces, el index pierde el tz):
        - issue #7795: concat of objects with the same timezone get reset to UTC;
        - issue #10567: DataFrame combine_first() loses timezone information for datetime columns
            https://github.com/pydata/pandas/issues/10567
    :param tz_ant: TZ de referencia para establecerlo al final si se ha perdido en la operación
    :param func_merge: puntero a función que realiza la operación de merge / join / combine / etc.
    :param args: argumentos para func_merge
    :param kwargs: argumentos para func_merge
    :return: dataframe_merged con TZ anterior
    """
    df_merged = func_merge(*args, **kwargs)
    if tz_ant is not None and tz_ant != df_merged.index.tz:
        # print_warn('Error pandas: join prevProg + demandaGeneracion pierde timezone (%s->%s)'
        #            % (data_import[KEYS_DATA[0]].index.tz, tz_ant))
        df_merged.index = df_merged.index.tz_convert(tz_ant)
    return df_merged