📜  streamlit 日期时间选择器 (1)

📅  最后修改于: 2023-12-03 15:35:09.995000             🧑  作者: Mango

Streamlit 日期时间选择器

Streamlit 提供了一个日期时间选择器组件,实现瞬间创建一个交互式 UI,允许用户渐进式探索数据并尝试超越图表的可能性。

使用方式
import streamlit as st
import datetime

# 单个日期选择器
st.date_input("请选择日期:", datetime.date.today())

# 单个时间选择器
st.time_input("请选择时间:", datetime.time(0, 0))

# 日期时间选择器
st.datetime_input("请选择日期和时间:", datetime.datetime.now())

在上述代码中,我们可以通过调用 st.date_inputst.time_inputst.datetime_input 来创建日期时间选择器。

每个选择器都需要两个传入参数,第一个参数是显示在组件旁边的标签,第二个参数则是当前选定的日期或时间;如果第二个参数未指定,则默认选中当前日期或时间。

参数详解

在使用上述选择器的同时,我们还可以传递其他参数来修改组件的外观和行为。下面列出了一些常见的选择器参数:

  • min_value: 组件可选的最小日期或时间。
  • max_value: 组件可选的最大日期或时间。
  • key: 用于识别选择器的ID。
  • format: 日期或时间的显示格式,使用 strftime 格式化指令。
示例应用

以下代码演示了如何使用日期时间选择器组件。在代码运行后,你可以从下拉框中选择一个时间范围,组件将会筛选符合条件的数据。

import streamlit as st
import pandas as pd
import datetime

df = pd.read_csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")

min_date = datetime.date(1900, 1, 1)
max_date = datetime.date(2022, 12, 31)

start_date = st.date_input("选择开始日期", min_value=min_date, max_value=max_date)
end_date = st.date_input("选择结束日期", min_value=min_date, max_value=max_date, value=datetime.date.today())

filtered_df = df[(df["Age"] >= (datetime.datetime.combine(start_date, datetime.datetime.min.time())))
                    & (df["Age"] < (datetime.datetime.combine(end_date, datetime.datetime.min.time())))]
st.write("共计 {0} 条数据符合要求:".format(len(filtered_df)))
st.dataframe(filtered_df)
总结

Streamlit 组件库提供的日期时间选择器允许用户轻松地选择特定日期或时间,帮助开发者实现更为人性化的交互式 UI。除此之外,支持大多数常见的日期时间格式,并具备一定程度的自定义和过滤能力,大幅简化开发者的编程工作。