AttributeError: ne Peut utiliser .dt accesseur avec datetimelike valeurs
Salut, je suis en utilisant des pandas pour convertir une colonne de mois.
Quand j'ai lu mes données, ils sont objets:
Date object
dtype: object
Donc je suis la première mise à jour de temps et ensuite d'essayer de les rendre aussi mois:
import pandas as pd
file = '/pathtocsv.csv'
df = pd.read_csv(file, sep = ',', encoding='utf-8-sig', usecols= ['Date', 'ids'])
df['Date'] = pd.to_datetime(df['Date'])
df['Month'] = df['Date'].dt.month
Aussi si ça peut aider:
In [10]: df['Date'].dtype
Out[10]: dtype('O')
Donc, l'erreur que j'obtiens est comme ceci:
/Library/Frameworks/Python.framework/Versions/2.7/bin/User/lib/python2.7/site-packages/pandas/core/series.pyc in _make_dt_accessor(self)
2526 return maybe_to_datetimelike(self)
2527 except Exception:
-> 2528 raise AttributeError("Can only use .dt accessor with datetimelike "
2529 "values")
2530
AttributeError: Can only use .dt accessor with datetimelike values
ÉDITÉ:
Date colonnes sont comme ceci:
0 2014-01-01
1 2014-01-01
2 2014-01-01
3 2014-01-01
4 2014-01-03
5 2014-01-03
6 2014-01-03
7 2014-01-07
8 2014-01-08
9 2014-01-09
Avez-vous des idées?
Merci beaucoup!
- Pouvez-vous montrer un exemple de votre dataframe, qui reproduit votre problème?
- Cela signifie que le
to_datetime
a échoué, veuillez post raw entrée de données et de code à reproduire ton erreur, ici les données matière - J'ai édité la réponse! Et y a ajouté des colonnes, avez-vous besoin de quelque chose de plus?
- Désolé, vous avez besoin de poster de code et de données pertinentes, qui reproduit votre erreur, ce qui est insuffisant
- J'ai ajouté mon code exact. Mais les fichiers sont énormes. Comment puis-je passer?
- Ajouter peut-être quelques 5 à 10 lignes de, vérifier à l'aide d'un exemple csv, si cela peut reproduire votre problème.
- Pouvez-vous essayer d'ajouter
parse_dates
param deto_csv
:df = pd.read_csv(file, sep = ',', encoding='utf-8-sig', usecols= ['Date', 'ids'], parse_dates=['Date'])
- Il a exactement les memes resultats. Pensez-vous qu'il est une autre façon de le faire? Comme le fractionnement de la colonne de date?
- Cela signifie probablement que vous avez duff données pouvez-vous essayer
df['Date'] = pd.to_datetime(df['Date'], coerce=True)
où la date de chaînes ne sont pas correctement mis en formeNaT
sera mis en place, mais vraiment vous avez besoin de comprendre pourquoi il n'aime pas ces lignes - Oh que effectivement travaillées! Je vais faire des recherches pour trouver quelles sont les lignes de production de ce gâchis! Vous êtes géniaux, merci!
Vous devez vous connecter pour publier un commentaire.
Votre problème ici est que
to_datetime
silencieusement échoué dans la dtype est resté commestr/object
, si vous définissez paramerrors='coerce'
alors si la conversion échoue pour une chaîne particulière ces lignes sont définies àNaT
.De sorte que vous besoin de savoir quel est le problème avec les valeurs de ligne.
Voir le docs
Votre problème ici est que le dtype de 'Date' est resté comme str/objet. Vous pouvez utiliser le
parse_dates
paramètre lors de l'utilisation deread_csv
De la documentation pour le
parse_dates
paramètrePertinents pour cette question est de la "liste des int ou des noms de" un.
col est les colonnes de l'index de 'Date' qui traite séparément, comme une colonne de date.