marco de datos dask cómo convertir la columna a to_datetime
Estoy tratando de convertir una columna de mi marco de datos a fecha y hora. Siguiendo la discusión aquíhttps://github.com/dask/dask/issues/863 Intenté el siguiente código:
import dask.dataframe as dd
df['time'].map_partitions(pd.to_datetime, columns='time').compute()
Pero recibo el siguiente mensaje de error
ValueError: Metadata inference failed, please provide `meta` keyword
¿Qué debo poner exactamente debajo de meta? ¿Debo poner un diccionario de TODAS las columnas en df o solo de la columna 'tiempo'? y que tipo debo poner? He intentado dtype y datetime64 pero ninguno de ellos funciona hasta ahora.
Gracias y agradezco su orientación.
Actualizar
Incluiré aquí los nuevos mensajes de error:
1) Uso de marca de tiempo
df['trd_exctn_dt'].map_partitions(pd.Timestamp).compute()
TypeError: Cannot convert input to Timestamp
2) Usar datetime y meta
meta = ('time', pd.Timestamp)
df['time'].map_partitions(pd.to_datetime,meta=meta).compute()
TypeError: to_datetime() got an unexpected keyword argument 'meta'
3) Solo usando la fecha y hora: se atasca al 2%
In [14]: df['trd_exctn_dt'].map_partitions(pd.to_datetime).compute()
[ ] | 2% Completed | 2min 20.3s
Además, me gustaría poder especificar el formato en la fecha, como lo haría en pandas:
pd.to_datetime(df['time'], format = '%m%d%Y'
Actualización 2
Después de actualizar a Dask 0.11, ya no tengo problemas con la palabra clave meta. Aún así, no puedo superar el 2% en un marco de datos de 2GB.
df['trd_exctn_dt'].map_partitions(pd.to_datetime, meta=meta).compute()
[ ] | 2% Completed | 30min 45.7s
Actualización 3
funcionó mejor de esta manera:
def parse_dates(df):
return pd.to_datetime(df['time'], format = '%m/%d/%Y')
df.map_partitions(parse_dates, meta=meta)
No estoy seguro de si es el enfoque correcto o no