/ / Python Cómo obtener el primer elemento del token de fecha: python, string, date, vector, pandas

Python Cómo obtener el primer elemento del token de fecha: python, string, date, vector, pandas

Estoy usando Python 2.7 y mis datos se ven así:

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

Quiero analizar DateVar para crear 2 nuevos campos: un campo "mes" y un campo "año".

Pude tokenizar "DateVar" a través del método de cadena vectorizada:

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

Esto está un poco más cerca de lo que quiero, así que luego intenté cortar los meses [9, 10, 2] usando el siguiente código:

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

Pero inesperadamente, estoy obteniendo:

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

Entonces, ¿cómo puedo obtener un vector de todos los meses?

Respuestas

1 para la respuesta № 1

Si solo necesita una columna, puede usar:

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

Si necesita la columna de mes y día, use 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)

La salida:

  month  day
0      9    1
1     10    1
2      2    1

0 para la respuesta № 2

Es porque

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

asi que

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

0 para la respuesta № 3
v = [x[0] for x in df.DateVar.str.split("/")]