У меня есть неприятная проблема при сравнении даты переменной с набором дат pandas. Какие бы варианты форматирования я ни пробовал, я просто не могу привести их в соответствие. Помогите, ребята, мне в основном нужно только сравнить даты в наборе данных pandas с сегодняшней датой + 6 месяцев.
Мой код:
SourceData_Workbook = R"G:\AR\REPORTS\Automation Files\Credit Risk\test1.xlsx"
SourceInPandas = pd.read_excel(SourceData_Workbook, skiprows=33,header=0,index=False)
# Creating date variable + 6 months
six_months = date.today() + relativedelta(months=+6)
# Formatting sourced data to date format
SourceInPandas['Req.dlv.dt']=SourceInPandas['Req.dlv.dt'].apply(lambda x:datetime.strptime(x,'%d.%m.%Y'))
# Fails on this line
SourceInPandas.loc[(SourceInPandas['Req.dlv.dt']<= six_months) & (SourceInPandas['OpIt'] != "15 Overdue account")& (SourceInPandas['OpIt'] != "16 Prepayment required")& (SourceInPandas['OpIt'] != "17 Approval required"),"OpIt"] = "Future delivery"
Трассировки стека:
TypeError: Invalid comparison between dtype=datetime64[ns] and date
Вы можете использовать Timestamp с Timestamp.floor и добавить 6 месяцев с помощью DateOffset:
six_months = pd.Timestamp('today').floor('d') + pd.DateOffset(months=6)
print (six_months)
2021-06-10 00:00:00
SourceInPandas['Req.dlv.dt']=pd.to_datetime(SourceInPandas['Req.dlv.dt'], dayfirst=True)
Дикий уз то хрнэ! Здравим СК г. Брна. ;)
К сожалению, даже это выводит ту же ошибку: Недопустимое сравнение между dtype=datetime64[ns] и датой