Я пытаюсь выбрать строки кадра данных pandas в диапазоне дат. Кадр данных загружается из Excel, и дата автоматически сохраняется как datetime.time, что вызывает проблемы при сравнении с datetime.datetime.
Я попытался преобразовать datetime.time в datetime.datetime, используя pd.to_datetime, но это не сработало, возможно, потому, что оно находится в DF. Я попытался установить столбец в datetime.datetime, когда он читается. Я пытался преобразовать в datetime.datetime во время чтения. Ни один из них не работал. Столбец называется Sub_End и представляет собой просто 5-значное число с форматом даты, например, 42636 — это 23 сентября 2016 года.
Вот некоторые из попыток загрузки, которые я сделал:
Subadvisory_Advisor_Fires=pd.read_excel('SOLO_Advisor_Data.xlsx',sheetname='Advisor_Fires', dtype = {'Sub_End': date})
Это прочитало файл без проблем, но столбец все еще был datetime.time
Subadvisory_Advisor_Fires=pd.read_excel('SOLO_Advisor_Data.xlsx',sheetname='Advisor_Fires', converters= {'Sub_End': pd.to_datetime})
Я получил ошибку на этом: TypeError: не конвертируется в дату и время
Subadvisory_Advisor_Fires=pd.read_excel('SOLO_Advisor_Data.xlsx',sheetname='Advisor_Fires', dtype = {'Sub_End': datetime.datetime})
Это прочитало файл без проблем, но столбец все еще был datetime.time
Код с ошибкой:
Advisor_Fires=Subadvisory_Advisor_Fires
Start_Datetime = datetime.datetime(2016, 12, 31)
End_Datetime = datetime.datetime(2018, 12, 31)
Advisor_Fires = Advisor_Fires[(Advisor_Fires['Sub_End']).between(Start_Datetime, End_Datetime)]
Ошибка, которую я получаю:
TypeError: can't compare datetime.time to datetime.datetime
Я просто пытаюсь ограничить строки, включив в них ту, где они находятся между этими двумя датами. Ничто из того, что я пробовал, не позволяло дате в файле Excel правильно читаться как даты.






Я уверен, что есть более простой способ сделать это, но я заставил это работать
Subadvisory_Advisor_Fires=pd.read_excel('SOLO_Advisor_Data.xlsx',sheetname='Advisor_Fires', converters = {'Sub_End':str})
Year = Subadvisory_Advisor_Fires['Sub_End'].str.slice(0, 4)
Month = Subadvisory_Advisor_Fires['Sub_End'].str.slice(5, 7)
Day = Subadvisory_Advisor_Fires['Sub_End'].str.slice(8, 10)
Year = pd.to_numeric(Year, errors='coerce')
Month = pd.to_numeric(Month, errors='coerce')
Day = pd.to_numeric(Day, errors='coerce')
Dates = pd.to_datetime((Year*10000+Month*100+Day).apply(str),format='%Y%m%d')
Subadvisory_Advisor_Fires['Sub_End_Converted'] = Dates