потоковый ввод даты для фильтрации кадра данных серии

#python #streamlit

Вопрос:

Я получаю эту ошибку TypeError: «lt; «не поддерживается между экземплярами» str » и «datetime.date».

У меня есть фрейм данных серии, содержащий некоторые значения, где дата является индексом. Дата уже отформатирована в «%Y-%m-%d».

Я использую потоковый ввод данных для фильтрации своих данных, но он не работает 🙁

Формат даты ниже, я надеялся, что пользовательский ввод будет соответствовать моему текущему формату даты.

 start_date = st.date_input('Start Date', value = pd.to_datetime('2021-01-31', format='%Y-%m-%d')) end = st.date_input('End Date', value = pd.to_datetime('today', format='%Y-%m-%d'))  st.table(Series.loc[start_date:end])  

Ответ №1:

Вывод st.date_input всегда является datetime.date объектом. Когда вы даете ему .loc , он пытается сравнить даты в строковом формате и даты в datetime.date формате. Чтобы сделать то, что вы хотите сделать, вам просто нужно преобразовать свои даты в строку, прежде чем отправлять их в .loc :

 import streamlit as st import pandas as pd  start_date = st.date_input("Start Date", value=pd.to_datetime("2021-01-31", format="%Y-%m-%d")) end_date = st.date_input("End Date", value=pd.to_datetime("today", format="%Y-%m-%d"))  # convert the dates to string start = start_date.strftime("%Y-%m-%d") end = end_date.strftime("%Y-%m-%d")  st.table(Series.loc[start:end])