#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])