Solución:
Supongo que el método más fácil y rápido sería crear un dictado de mapeo y un mapa de la siguiente manera:
In [2]: df
Out[2]:
YEAR MONTH ID
0 2011 JAN 1
1 2011 FEB 1
2 2011 MAR 1
In [3]: d = {'JAN':1, 'FEB':2, 'MAR':3, 'APR':4, }
In [4]: df.MONTH = df.MONTH.map(d)
In [5]: df
Out[5]:
YEAR MONTH ID
0 2011 1 1
1 2011 2 1
2 2011 3 1
es posible que desee utilizar df.MONTH = df.MONTH.str.upper().map(d)
si no todos MONTH
los valores están en mayúsculas
otro método más lento pero más robusto:
In [11]: pd.to_datetime(df.MONTH, format="%b").dt.month
Out[11]:
0 1
1 2
2 3
Name: MONTH, dtype: int64
ACTUALIZAR: podemos crear un mapeo automáticamente (gracias a @Quetzalcoatl)
import calendar
d = dict((v,k) for k,v in enumerate(calendar.month_abbr))
o alternativamente (usando solo Pandas):
d = dict(zip(range(1,13), pd.date_range('2000-01-01', freq='M', periods=12).strftime('%b')))
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)