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

如何使用pd.to_datetime实现Streamlit用户自主选择未来日期作为股票预测结束日期

失效核心原因

st.date_input 返回的是原生 datetime.date 对象,而 pandas_datareader 的 DataReader 接口仅支持字符串、pandas.Timestamp 类型的日期参数,类型不匹配导致调用失败。另外需要注意:雅虎财经仅能提供截止到当前交易日的历史真实股价,你要实现的未来日期预测,需要把「历史数据拉取结束日期」和「预测结束日期」分开处理。


修改后可运行代码示例

import streamlit as st
import pandas as pd
import pandas_datareader.data as data
from datetime import date

st.title('Stock Prediction')

# 侧边栏输入区
ticker_input = st.sidebar.text_input('Enter Stock Ticker', 'AAPL')
# 获取用户选择的起止日期
start = st.date_input('Start', value = pd.to_datetime('2010-01-01'))
end = st.date_input('End', value = pd.to_datetime('2024-01-01'))

# 日期类型转换,转为DataReader支持的字符串格式
start_str = start.strftime('%Y-%m-%d')
# 拉取历史数据最多只能到当前日期,用户选的结束日期晚于今天时,历史数据先拉取到今天
today = date.today()
fetch_end = end if end <= today else today
fetch_end_str = fetch_end.strftime('%Y-%m-%d')

# 拉取历史股价
df = data.DataReader(ticker_input, 'yahoo', start_str, fetch_end_str)
st.subheader(ticker_input)
st.dataframe(df)

# 计算需要预测的天数,对接你原有的预测模型逻辑即可
if end > today:
    predict_days = (end - today).days
    # 生成predict_days的预测数据后和历史df按日期拼接,就能得到截止到用户所选日期的完整数据用于可视化
    st.write(f'需要预测未来{predict_days}天的股价')

补充说明

  • 如果你使用的其他股票接口支持直接传入未来日期返回预测结果,直接把转成字符串格式的 end.strftime('%Y-%m-%d') 传给对应接口参数即可。
  • 可视化时把历史数据和预测数据按日期拼接后绘图,最终图表的结束时间就会和用户选择的日期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:24:04