use of melt into a df for long to wide and df.loc
13:04 13 Nov 2025

i'd like to know if there is another better way of using df_filtered_dates = df.loc[start_date:end_date] or of this way it's good, i'm using for filter dates between the dates i choose from the frontend using flatpickr

@reactive.calc
def filtered_data():
    
    sensors = input.sensores_check()
    start_date_str = input.inicio()
    end_date_str = input.fin()

    if not sensors or not start_date_str or not end_date_str:
        return pd.DataFrame(columns=['timestamp', 'sensor', 'temperatura'])
    
    try:
        formato_fecha = "%d-%m-%Y %H:%M"
        start_date = pd.to_datetime(start_date_str, format=formato_fecha)
        end_date = pd.to_datetime(end_date_str, format=formato_fecha)

        df_filtered_dates = df.loc[start_date:end_date]

        df_filtrado_sensores = df_filtered_dates[list(sensors)] 
        df_parse = df_filtrado_sensores.reset_index().melt(
                id_vars='timestamp', 
                value_vars=sensors, 
                var_name='sensor',  
                value_name='temperatura' 
            )
        print("Datos en formato melted para mostrar")
        print(df_parse.head(9))
        return df_parse
    
    except Exception as e:
        return pd.DataFrame(columns=['timestamp', 'sensor', 'temperatura'])
Fecha,Hora,Bomba Calor - Temperatura de Aire (°C),Bomba Calor - Temperatura Entrada (°C),Bomba Calor - Temperatura Salida (°C),Bomba Calor - Estado Caldera 2 (estado),Bomba Calor - Estado Caldera 1 (estado),Bomba Calor - Estado Bomba de Calor (estado)
04-10-25,00:01,22.2,63.4,63.4,0.0,0.0,0.0
04-10-25,00:11,21.9,61.8,61.7,0.0,0.0,0.0
04-10-25,00:21,21.7,60.3,60.3,0.0,0.0,0.0
with ui.card(style="margin-bottom: 20px;"):
    
    ui.h5("Seleccione un rango de Fecha y Hora", style="text-align: center;")
    with ui.tags.div(class_="input-container"): 
      
        with ui.tags.div(class_="input-group"): 
            ui.tags.label("Desde:", _for="inicio")
            ui.tags.input(id="inicio", type="text", class_="flatpickr coqueto")
        
        
        with ui.tags.div(class_="input-group"):
            ui.tags.label("Hasta:", _for="fin")
            ui.tags.input(id="fin", type="text", class_="flatpickr coqueto")
python pandas plotly shiny-reactivity py-shiny