Je voudrais créer une colonne dans un cadre de données pandas qui est une représentation entière du nombre de jours dans une colonne timedelta. Est-il possible d'utiliser 'datetime.days' ou dois-je faire quelque chose de plus manuel?
colonne timedelta
7 jours, 23:29:00
colonne jour entier
sept
Utilisez l'attribut dt.days
. Si td
est le nom de votre série timedelta, accédez à cet attribut via:
_td.dt.days
_
Vous pouvez également obtenir les attributs seconds
et microseconds
de la même manière.
Vous pouvez faire ceci, où td
est votre série de timedeltas. La division convertit les deltas de la nanoseconde en deltas de jour et la conversion en int se transforme en jours entiers.
import numpy as np
(td / np.timedelta64(1, 'D')).astype(int)
Les objets Timedelta ont des attributs d'instance en lecture seule .days
, .seconds
et .microseconds
.
Si la question n'est pas simplement "comment accéder à une forme entière du timedelta?" mais "comment convertir la colonne timedelta dans le cadre de données en un entier?" la réponse pourrait être un peu différente. En plus de l'accesseur .dt.days
, vous avez besoin de df.astype
ou de pd.to_numeric
.
L'une ou l'autre de ces options devrait aider:
df['tdColumn'] = pd.to_numeric(df['tdColumn'].dt.days, downcast='integer')
ou
df['tdColumn'] = df['tdColumn'].dt.days.astype('int16')