Comment puis-je convertir des horodatage date / heure.date de pandas dataframe?
J'ai besoin de fusionner les 2 pandas dataframes ensemble sur les dates, mais, actuellement, ils ont différents types date. 1 est horodatage (importé à partir d'excel) et l'autre est datetime.date
.
Des conseils?
J'ai essayé pd.to_datetime().date
mais cela ne fonctionne que sur un seul élément(par exemple,df.ix[0,0]
), il ne me laisse pas s'appliquer à l'ensemble de la série (par exemple,df['mydates']
) ou le dataframe.
pd.to_datetime(df['mydates'])
Salut @piRSquared. Cela ne fonctionne pas malheureusement. pd.todatetime(df['my_dates']) renvoie toujours pandas.tslib.Horodatage lorsque j'accède à 1 élément dans la série (par exemple, si je enregistrer comme une nouvelle DataFrame comme df2, de type(df2.ix[0,0]) renvoie toujours Timestamp), et j'en ai besoin pour être de type datetime.date
Salut @piRSquared. Cela ne fonctionne pas malheureusement. pd.todatetime(df['my_dates']) renvoie toujours pandas.tslib.Horodatage lorsque j'accède à 1 élément dans la série (par exemple, si je enregistrer comme une nouvelle DataFrame comme df2, de type(df2.ix[0,0]) renvoie toujours Timestamp), et j'en ai besoin pour être de type datetime.date
OriginalL'auteur Afo B | 2017-01-21
Vous devez vous connecter pour publier un commentaire.
J'ai eu de l'aide d'un collègue.
Cela semble résoudre le problème posté ci-dessus
pd.to_datetime(df['mydates']).apply(lambda x: x.date())
OriginalL'auteur Afo B
Une autre question a été marqué comme dupe pointant vers le présent, mais il ne comprend pas cette réponse, qui me semble le plus simple (peut-être que cette méthode n'existait pas encore lorsque cette question a été postée/répondu):
Les pandas doc montre une
pandas.Timestamp.to_pydatetime
méthode de "Convertir un Timestamp objet d'un natif Python objet datetime".OriginalL'auteur codingatty
Si vous avez besoin de la
datetime.date
objets... puis les passer à travers avec la.date
attribut de laTimestamp
pd.to_datetime(df['mydates']).apply(lambda x: x.date())
Si l'entrée est une série avec une seule ligne,
s.date.date()
a fonctionné pour moi.OriginalL'auteur piRSquared
J'ai trouvé le suivant à être le plus efficace, quand je suis tombé sur un problème similaire. Par exemple, avec le dataframe
df
avec une série de timestmaps dans la colonnets
.Ce fait la conversion, vous pouvez laisser de côté la
.date()
suffixe pour datetimes. Puis de modifier la colonne sur le dataframe. Comme si...OriginalL'auteur BrotherJack