2 votes

Impossible de comparer des dates entre une variable date et un dataframe pandas

Je rencontre un problème frustrant lors de la comparaison de la variable date avec le jeu de données pandas de dates. Peu importe les options de formatage que j'essaie, je n'arrive pas à les aligner. J'ai besoin de comparer les dates de l'ensemble de données pandas avec la date d'aujourd'hui + 6 mois.

Mon code :

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" 

Trace de pile :

TypeError: Invalid comparison between dtype=datetime64[ns] and date

1voto

jezrael Points 290608

Vous pouvez utiliser Timestamp con Timestamp.floor et ajouté 6 mois plus tard par 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)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X