python pandas extrait année de datetime — df['année'] = df['date'].l'année n'est pas de travail
Désolé pour cette question qui me semble répétitif - je attendre la réponse va me faire sentir comme un bonehead... mais je n'ai pas eu de chance, à l'aide des réponses aux questions similaires sur DONC.
Je suis de l'importation de données à travers read_csv
, mais pour une raison que je ne peux pas comprendre, je ne suis pas en mesure d'extraire de l'année ou le mois de la dataframe série df['date']
.
date Count
6/30/2010 525
7/30/2010 136
8/31/2010 125
9/30/2010 84
10/29/2010 4469
df = pd.read_csv('sample_data.csv',parse_dates=True)
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].year
df['month'] = df['date'].month
Mais cela renvoie:
AttributeError: 'Série' objet n'a pas d'attribut "année"
Merci à l'avance.
Mise à JOUR:
df = pd.read_csv('sample_data.csv',parse_dates=True)
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
cela génère les mêmes "AttributeError: 'Série' objet n'a pas d'attribut 'dt' "
SUIVI:
Je suis en utilisant Spyder 2.3.1 avec Python 3.4.1 64 bits, mais impossible de mettre à jour les pandas à une version plus récente (actuellement sur 0.14.1). Chaque suivant génère une erreur de syntaxe non valide:
HTML:
conda update pandas
conda install pandas==0.15.2
conda install -f pandas
Des idées?
- où est l'année à venir? Êtes-vous essayer d'accéder à une ligne
(df["date"][0].year
? - J'ai un fichier csv avec les dates et les autres colonnes qui sortirent tous de SQL as string de données. En essayant de créer la nouvelle année et le mois de colonnes à utiliser pour le regroupement. le csv a ~5000 lignes.
- Oui mais le
df["date"]
est un'pandas.core.series.Series'
objet. ce qui devraitdf['date'].year
être? - Si vous utilisez la version
0.15.0
ou plus, alors vous pouvezdf['year'] = df['date'].dt.year
- Je veux juste créer 2 colonnes... pour un an et un mois que les nombres entiers.
- essayé df['date'].dt.année, EdChum.
- voir ma mise à jour, il faut travailler dans votre version de pandas, vous pouvez poster la version que vous utilisez
Vous devez vous connecter pour publier un commentaire.
Si vous êtes en cours d'exécution d'une récente-ish version de pandas, alors vous pouvez utiliser l'attribut datetime
dt
pour accéder à l'datetime composants:MODIFIER
Il semble que vous utilisez une ancienne version de pandas dans lequel cas, la suivante devrait fonctionner:
Concernant la raison pour laquelle il n'a pas analyser ce dans un datetime dans
read_csv
vous avez besoin pour passer de la position de votre colonne ([0]
) parce que quandTrue
il tente d'analyser les colonnes[1,2,3]
voir le docsDonc, si vous passez param
parse_dates=[0]
àread_csv
il ne devrait pas y avoir besoin d'appelerto_datetime
sur la "date" de la colonne après le chargement.parse_dates=[0]
pourread_csv
va analyser correctement les chaînes date en datetime objets de sorte que vous n'avez pas besoin de l'appointto_datetime
appelCela fonctionne:
Maintenant:
donne à cette trame de données:
Ce qui a fonctionné pour moi a été la mise à niveau des pandas à la dernière version:
À partir de la Ligne de Commande n':
Quand utiliser
dt
accesseurUne source de confusion quand tourne autour de l'utilisation
.year
et quand utiliser.dt.year
.Le premier est un attribut pour
mp.DatetimeIndex
objets; le dernier pourmp.Série
objets. Considérez ceci dataframe:La définition de la série et l'index se ressemblent, mais la
pd.DataFrame
constructeur convertit en différents types:La
DatetimeIndex
objet directyear
attribut, tandis que leSeries
objet doit utiliser ledt
accesseur. De même pourmonth
:Un subtil mais la différence importante à noter est que
df.index.month
donne un tableau NumPy, tandis quedf['Dates'].dt.month
donne une Pandas de la série. Ci-dessus, nous utilisonsmp.De la série.les valeurs de
pour extraire le tableau NumPy représentation.