dask dataframe como converter a coluna em to_datetime
Estou tentando converter uma coluna do meu dataframe em data e hora. Após a discussão aquihttps://github.com/dask/dask/issues/863 Eu tentei o seguinte código:
import dask.dataframe as dd
df['time'].map_partitions(pd.to_datetime, columns='time').compute()
Mas estou recebendo a seguinte mensagem de erro
ValueError: Metadata inference failed, please provide `meta` keyword
O que exatamente devo colocar em meta? devo colocar um dicionário de todas as colunas em df ou apenas da coluna 'time'? e que tipo devo colocar? Eu tentei dtype e datetime64, mas nenhum deles funciona até agora.
Obrigado e agradeço sua orientação,
Atualizar
Vou incluir aqui as novas mensagens de erro:
1) Usando carimbo de data e hora
df['trd_exctn_dt'].map_partitions(pd.Timestamp).compute()
TypeError: Cannot convert input to Timestamp
2) Usando datetime e 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) Apenas usando data e hora: fica preso a 2%
In [14]: df['trd_exctn_dt'].map_partitions(pd.to_datetime).compute()
[ ] | 2% Completed | 2min 20.3s
Além disso, gostaria de poder especificar o formato na data, como faria nos pandas:
pd.to_datetime(df['time'], format = '%m%d%Y'
Atualização 2
Depois de atualizar para o Dask 0.11, não tenho mais problemas com a palavra-chave meta. Ainda assim, não consigo passar de 2% em um dataframe de 2 GB.
df['trd_exctn_dt'].map_partitions(pd.to_datetime, meta=meta).compute()
[ ] | 2% Completed | 30min 45.7s
Atualização 3
funcionou melhor desta maneira:
def parse_dates(df):
return pd.to_datetime(df['time'], format = '%m/%d/%Y')
df.map_partitions(parse_dates, meta=meta)
Não tenho certeza se é a abordagem correta ou não