如何使用 pd.to_datetime 从用户输入的未来日期中检索日期

Posted

技术标签:

【中文标题】如何使用 pd.to_datetime 从用户输入的未来日期中检索日期【英文标题】:How to use pd.to_datetime to retrieve dates from user input of a future date 【发布时间】:2021-12-30 23:42:39 【问题描述】:

以下代码允许我选择日期以可视化和预测定义日期范围内的股票价格

start = '2010-01-01'
end = '2021-11-20'

st.title('Stock Prediction')

ticker_input = st.sidebar.text_input('Enter Stock Ticker', 'AAPL')
df = data.DataReader(ticker_input, 'yahoo', start, end)
st.subheader(ticker_input)

仅当我通过将end 更改为'2022-01-01' 将结束变量更改为IDE 中的未来日期然后在streamlit 中运行它时,该代码才有效。我的预测图表也会改变以反映结束日期。如何更改结束变量,以便用户可以自己选择未来的日期?我遵循的教程没有显示这一点,我尝试查看 datetime 允许用户选择未来日期的示例,它们似乎都只是到现在。

start = st.date_input('Start', value = pd.to_datetime('2010-01-01'))
end = st.date_input('End', value = pd.to_datetime('2024-01-01'))

我尝试像这样使用pd.to_datetimest.date_input 来查看用户是否可以从下拉日历中更改它,但它不起作用。

【问题讨论】:

什么是st?一个模块? 是的 streamlit 库,用于为数据科学项目制作 Web 应用程序 您能详细说明一下这个问题吗?如果我理解正确 - date_input 不像您期望的那样工作,并且用户不能将日期更改为未来的日期,对吧? 【参考方案1】:

首先我想指出,pandas-datareader 不能预测股票价格,它使您能够获取有关股票价格的历史数据,例如 yahoo。这意味着最大结束日期可以是今天,并且给它一个更大的日期不会改变调用返回的数据:

data.DataReader(ticker_input, 'yahoo', start, end)

更多信息你可以阅读他们的documentation。

记住这里是让用户输入开始日期和结束日期并绘制股票价格图的代码:

import streamlit as st
from pandas_datareader import data
import datetime

###########
# sidebar #
###########
#
ticker_input = st.sidebar.selectbox('Select one symbol', ('AAPL',))
# create default date range
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2021, 11, 1)
# ask user for his date
start_date = st.sidebar.date_input('Start date', start)
end_date = st.sidebar.date_input('End date', end)
# validate start_date date is smaller then end_date
if start_date < end_date:
    st.sidebar.success('Start date: `%s`\n\nEnd date:`%s`' % (start_date, end_date))
else:
    st.sidebar.error('Error: End date must fall after start date.')

##############
# Main Panel #
##############
# add title
st.title('Stock Prediction')
# get data based on dates
df = data.DataReader(ticker_input, 'yahoo', start_date, end_date)
# plot
st.line_chart(df.loc[:, ["Close", "Open", "Low", "High"]])

【讨论】:

以上是关于如何使用 pd.to_datetime 从用户输入的未来日期中检索日期的主要内容,如果未能解决你的问题,请参考以下文章

pandas常用操作(随时更新)

使用 pd.to_datetime 处理多种日期时间格式

为啥 pandas 在调用 pd.to_datetime() 时返回时间戳而不是 datetime 对象?

pd.datetime( )和pd.to_datetime( )

pd.to_datetime 上的未知字符串格式

时间转换py.datetime & pd.to_datetime