web-dev-qa-db-fra.com

AttributeError: l'objet 'Series' n'a pas d'attribut 'days'

J'ai une colonne "delta" dans un type de trame de données: timedelta64 [ns], calculé en sous-traitant une date à une autre. J'essaie de renvoyer le nombre de jours sous forme de flottant en utilisant ce code:

from datetime import datetime
from datetime import date
df['days'] = float(df['delta'].days)

mais je reçois cette erreur:

AttributeError: 'Series' object has no attribute 'days'

Des idées pourquoi?

9
OllieP

Lors de la soustraction des dates, vous devez utiliser le code suivant.

df = pd.DataFrame([ pd.Timestamp('20010101'), pd.Timestamp('20040605') ])
(df.loc[0]-df.loc[1]).astype('timedelta64[D]')

Donc, utilisez essentiellement .astype('timedelta64[D]') sur la colonne soustraite.

9
howard roark

La colonne DataFrame est une série, et pour la série, vous avez besoin de dt.accessor pour calculer les jours (si vous utilisez une version plus récente Pandas version). Vous pouvez voir les documents ici

Vous devez donc changer:

df['days'] = float(df['delta'].days)

À

df['days'] = float(df['delta'].dt.days)
4
Aseem Ahir