Je dois fusionner deux datagrames de pandas sur des dates, mais ils ont actuellement différents types de date. 1 correspond à l'horodatage (importé d'Excel) et l'autre à datetime.date
.
Aucun conseil?
J'ai essayé pd.to_datetime().date
mais cela ne fonctionne que sur un seul élément (par exemple df.ix[0,0]
), cela ne me permet pas de l'appliquer à l'ensemble de la série (par exemple df['mydates']
) ou au cadre de données.
J'ai trouvé ce qui suit le plus efficace lorsque j'ai rencontré un problème similaire. Par exemple, avec le dataframe df
avec une série de timestmaps dans la colonne ts
.
df.ts.apply(lambda x: pd.datetime.fromtimestamp(x).date())
Cela rend la conversion, vous pouvez omettre le suffixe .date()
pour les dates/heures. Ensuite, pour modifier la colonne sur le dataframe. Ainsi...
df.loc[:, 'ts'] = df.ts.apply(lambda x: pd.datetime.fromtimestamp(x).date())
Une autre question a été marquée comme dupe indiquant cela, mais elle n'incluait pas cette réponse, qui semble la plus simple (peut-être que cette méthode n'existait pas encore lorsque cette question a été postée/répondue):
La documentation pandas montre une méthode pandas.Timestamp.to_pydatetime
pour "Convertir un objet Timestamp en objet datetime Python natif".
Si vous avez besoin des objets datetime.date
... alors transmettez-les avec l'attribut .date
du Timestamp
pd.to_datetime(df['mydates']).date