J'ai une série de pandas date qui ressemble à ceci:

date       | ...
09.01.2000 |
02.02.2000 |
...

Le format est JJ-MM-AAAA. Je veux les diviser en trois colonnes Jour, Mois et Année. J'ai essayé:

col = date["date"].str.split(".", expand = True)
date["day"] = col[0]
date["month"] = col[1]
...

C'est assez gênant, alors y a-t-il un moyen plus pythonique? J'ai aussi essayé pd.to_datetime mais ce n'est pas le chemin le plus court.

2
AerysS 18 sept. 2020 à 07:25

3 réponses

Meilleure réponse

Vous pouvez effectuer plusieurs affectations de colonnes sur une seule ligne:

df[['day', 'month', 'year']] = df['date'].str.split('.', expand=True)

         date day month  year
0  09.01.2000  09    01  2000
1  02.02.2000  02    02  2000
4
Shubham Sharma 18 sept. 2020 à 04:44

Une option consiste à utiliser une seule affectation:

date['date'], date['month'] = col

Cela suppose que split() renvoie une liste avec exactement deux éléments.

2
Code-Apprentice 18 sept. 2020 à 04:29

Vous pouvez faire quelque chose comme ça.

import pandas as pd
df = pd.DataFrame({'date':['09.01.2000', '02.02.2000']})

df['mon'],df['day'],df['year'] = zip(*df['date'].str.split('.'))
print (df)

Il vous donnera le cadre de données ci-dessous. Si vous ne voulez pas de df['date'], vous pouvez utiliser la fonction drop () pour supprimer la colonne.

         date mon day  year
0  09.01.2000  09  01  2000
1  02.02.2000  02  02  2000
1
Joe Ferndz 18 sept. 2020 à 04:55