He estado luchando para eliminar la información de zona horaria de una columna en un dataframe de pandas. He comprobado la siguiente pregunta, pero no funciona para mí:
¿Puedo exportar pandas DataFrame a Excel quitando tzinfo?
Usé tz_localize para asignar una zona horaria a un objeto de fecha y hora, porque necesito convertir a otra zona horaria utilizando tz_convert. Esto agrega un desplazamiento UTC, en la forma “-06: 00”. Necesito deshacerme de este desplazamiento, porque produce un error cuando bash exportar el dataframe a Excel.
Salida real
2015-12-01 00:00:00-06:00
Salida deseada
2015-12-01 00:00:00
He intentado obtener los caracteres que quiero usando el método str (), pero parece que el resultado de tz_localize no es una cadena. Mi solución hasta ahora es exportar el dataframe a CSV, leer el archivo y usar el método str () para obtener los caracteres que quiero.
¿Hay una solución más fácil?
Tal vez ayude a quitar los últimos 6 caracteres:
print df datetime 0 2015-12-01 00:00:00-06:00 1 2015-12-01 00:00:00-06:00 2 2015-12-01 00:00:00-06:00 df['datetime'] = df['datetime'].astype(str).str[:-6] print df datetime 0 2015-12-01 00:00:00 1 2015-12-01 00:00:00 2 2015-12-01 00:00:00
Si su serie solo contiene fechas, entonces puede hacer:
my_series.dt.tz_localize(None)
Esto eliminará la información de la zona horaria (no cambiará la hora) y devolverá una serie de horas locales ingenuas, que se pueden exportar a Excel utilizando to_excel (), por ejemplo.
Siguiendo la sugerencia de Beatriz Fonseca, terminé haciendo lo siguiente:
from datetime import datetime df['dates'].apply(lambda x:datetime.replace(x,tzinfo=None))
Si siempre es los últimos 6 caracteres que desea ignorar, simplemente puede cortar su cadena actual:
>>> '2015-12-01 00:00:00-06:00'[0:-6] '2015-12-01 00:00:00'