我正在尝试在日期范围内选择熊猫数据框的行。数据框从Excel上传,并自动保存为DateTime.Time,这会在与DateTime.DateTime.DateTime.dateTime.DateTime.DateTime.DateTime.DateTime.DateTime中造成问题。
我尝试使用pd.to_datetime将dateTime.time转换为dateTime.datetime,但它不起作用,也许是因为它在DF中。我尝试将列设置为dateTime.datetime读取时。我尝试在阅读时尝试转换为datetime.datetime。这些都没有用。该列被命名为sub_end,它只是一个5位数字,带有日期格式,就像42636是9/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:不可转换为DateTime
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