/ / Python Comment obtenir le 1er élément du jeton de date - python, chaîne, date, vecteur, pandas

Python Comment obtenir le 1er élément du jeton de date - Python, chaîne, date, vecteur, pandas

J'utilise Python 2.7 et mes données ressemblent à ceci:

import pandas as pd
df = pd.DataFrame({ "DateVar" : ["9/1/2013", "10/1/2013", "2/1/2014"],
"Field" : "foo" })

Je veux analyser DateVar pour créer 2 nouveaux champs: un champ "mois" et un champ "année".

J'ai pu tokenize "DateVar" via la méthode de chaîne vectorisée:

df.DateVar.str.split("/")

C'est un peu plus près de ce que je veux, alors j'ai ensuite essayé de découper les mois [9, 10, 2] en utilisant le code suivant:

df.DateVar.str.split("/")[0]

Mais de façon inattendue, je reçois:

["9", "1", "2013"]

Alors, comment puis-je obtenir un vecteur de tous les mois?

Réponses:

1 pour la réponse № 1

Si vous n'avez besoin que d'une colonne, vous pouvez utiliser:

df.DateVar.str.split("/").str[0]

Si vous avez besoin de la colonne mois et jour, utilisez str.extract:

import pandas as pd
df = pd.DataFrame({ "DateVar" : ["9/1/2013", "10/1/2013", "2/1/2014"],
"Field" : "foo" })

print df.DateVar.str.extract(r"(?P<month>d+)/(?P<day>d+)/d+").astype(int)

le résultat:

  month  day
0      9    1
1     10    1
2      2    1

0 pour la réponse № 2

C'est parce que

>>> df.DateVar.str.split("/")
0     [9, 1, 2013]
1    [10, 1, 2013]
2     [2, 1, 2014]

alors

>>> df.DateVar.str.split("/")[0]
["9", "1", "2013"]

0 pour la réponse № 3
v = [x[0] for x in df.DateVar.str.split("/")]