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

如何将日期滑块与DataFrame结合实现实时过滤?

解决Streamlit日期滑块与DataFrame联动过滤问题

问题分析

你的代码已经正确生成了日期范围的过滤掩码,但没有将过滤后的数据用于表格展示,而是直接渲染了原始DataFrame,导致滑块调整时表格无变化;另外需要确保Date列的datetime类型正确,避免过滤逻辑失效。

修复后的完整代码

import pandas as pd
import streamlit as st
import plotly.express as px
import plotly.graph_objects as go
from pandas import read_excel
from PIL import Image

st.set_page_config(page_title='TBI')
st.header('TBI sold result')
st.subheader('Info')

### --- LOAD DATAFRAME
excel_file = 'Directory'
sheet_name = 'Sheet2'

df = pd.read_excel(excel_file,
                   sheet_name=sheet_name,
                   usecols='H:O',
                   header=2)
df['Release_stock'] = df['Release_stock'].fillna(0)
# 确保Date列为datetime类型,避免格式不匹配
df['Date'] = pd.to_datetime(df['Date'])

# --- STREAMLIT SELECTION
date_list = df["Date"].dt.date.unique().tolist()

date_range = st.sidebar.slider('日期范围:',
                        min_value=min(date_list),
                        max_value=max(date_list),
                        value=(min(date_list), max(date_list)))

# 生成过滤掩码并获取过滤后的数据集
mask = df['Date'].dt.date.between(*date_range)
df_filtered = df[mask]

number_of_result = df_filtered.shape[0]
st.markdown(f'*有效结果数量: {number_of_result}*')

# 渲染过滤后的表格
st.dataframe(df_filtered)

关键修改说明

  • 将原始的st.dataframe(df)移到过滤逻辑之后,改为渲染过滤后的df_filtered数据集
  • 添加df['Date'] = pd.to_datetime(df['Date'])强制转换日期类型,确保与滑块返回的date对象兼容
  • 优化变量名(如Model改为date_range),提升代码可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:09:21