pd.read_csv no analiza correctamente el campo de fecha / mes cuando se establece parse_date = ['nombre de columna']
Me encontré con este error al intentar analizar las pocas fechas a través de parse_dates depandas.read_csv()
. En el siguiente fragmento de código, estoy tratando de analizar fechas que tienen formatodd/mm/yy
lo que me está resultando una conversión incorrecta. Para algunos casos, el campo de fecha se considera como mes y viceversa.
Para simplificar, en algunos casosdd/mm/yy
convertirse ayyyy-dd-mm
en lugar deyyyy-mm-dd
.
Caso 1:
04/10/96 is parsed as 1996-04-10, which is wrong.
Caso 2:
15/07/97 is parsed as 1997-07-15, which is correct.
Caso 3:
10/12/97 is parsed as 1997-10-12, which is wrong.
Muestra de código
import pandas as pd
df = pd.read_csv('date_time.csv')
print 'Data in csv:'
print df
print df['start_date'].dtypes
print '----------------------------------------------'
df = pd.read_csv('date_time.csv', parse_dates = ['start_date'])
print 'Data after parsing:'
print df
print df['start_date'].dtypes
Salida de corriente
----------------------
Data in csv:
----------------------
start_date
0 04/10/96
1 15/07/97
2 10/12/97
3 06/03/99
4 //1994
5 /02/1967
object
----------------------
Data after parsing:
----------------------
start_date
0 1996-04-10
1 1997-07-15
2 1997-10-12
3 1999-06-03
4 1994-01-01
5 1967-02-01
datetime64[ns]
Rendimiento esperado
----------------------
Data in csv:
----------------------
start_date
0 04/10/96
1 15/07/97
2 10/12/97
3 06/03/99
4 //1994
5 /02/1967
object
----------------------
Data after parsing:
----------------------
start_date
0 1996-10-04
1 1997-07-15
2 1997-12-10
3 1999-03-06
4 1994-01-01
5 1967-02-01
datetime64[ns]
Más comentarios:
Podría usardate_parser
opandas.to_datetime()
para especificar el formato apropiado para la fecha. Pero en mi caso, tengo pocos campos de fecha como['//1997', '/02/1967']
para lo cual necesito convertir['01/01/1997','01/02/1967']
. losparse_dates
me ayuda a convertir ese tipo de campos de fecha al formato esperado sin obligarme a escribir una línea de código adicional.
¿Hay alguna solución para esto?
Enlace de error @GitHub:https://github.com/pydata/pandas/issues/13063