Saltar al contenido

convertir una columna en un pandas de Python de STRING MONTH en INT

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *