You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Streamlit日期滑块设置可选范围(如1天或3天)

给Streamlit日期滑块设置固定可选范围

要限制日期滑块只能选择1天、3天这类固定时长的区间,可以通过预设时间范围选项+自动计算日期区间的方式实现,替代原有的无限制双滑块方案,具体修改如下:

修改后的完整代码

import pandas as pd
import streamlit as st

def df_filter(message, df):
    # 定义可选的固定时间范围
    time_ranges = {
        "1天": pd.Timedelta(days=1),
        "3天": pd.Timedelta(days=3)
    }
    
    # 让用户选择需要的时间范围
    selected_range = st.selectbox("选择时间范围", options=list(time_ranges.keys()))
    delta = time_ranges[selected_range]
    
    # 计算允许的最大起始日期(确保结束日期不超过数据中的最新日期)
    max_start_date = df['Date'].max() - delta
    
    # 用单滑块选择起始日期,结束日期自动计算
    start_date = st.slider(
        message,
        min_value=df['Date'].min(),
        max_value=max_start_date,
        value=df['Date'].min()
    )
    end_date = start_date + delta
    
    # 过滤数据
    mask = df['Date'].between(start_date, end_date)
    filtered_df = df[mask]
    return filtered_df

if __name__ == '__main__':
    df = pd.DataFrame(heartrate_new)

    st.header('Datetime Filter')
    filtered_df = df_filter('选择起始日期', df)
    filtered_df.sort_values(by='Date', inplace=True)

    container1 = st.container()
    with container1:
        st.header('Data Frame')
        st.write(filtered_df)

关键修改说明

  • 固定范围选项:通过selectbox提供预设的1天、3天选项,用户无法选择任意时长
  • 自动计算区间:根据用户选择的时长,自动推导结束日期,确保区间长度严格符合所选范围
  • 边界校验:计算max_start_date避免结束日期超出数据中的最新日期,防止出现无数据的情况

内容的提问来源于stack exchange,提问作者alice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:36:22