Я пытаюсь преобразовать один столбец моего фрейма данных в datetime. После обсуждения здесь https://github.com/dask/dask/issues/863 Я пробовал следующий код:
import dask.dataframe as dd
df['time'].map_partitions(pd.to_datetime, columns='time').compute()
Но я получаю следующее сообщение об ошибке
ValueError: Metadata inference failed, please provide `meta` keyword
Что именно я должен поставить под мета? я должен поместить словарь ВСЕХ столбцов в df или только столбца 'time'? а какой типа ставить? Я пробовал dtype и datetime64, но пока ни один из них не работает.
Спасибо, и я ценю ваше руководство,
Обновить
Я включу сюда новые сообщения об ошибках:
1) Использование отметки времени
df['trd_exctn_dt'].map_partitions(pd.Timestamp).compute()
TypeError: Cannot convert input to Timestamp
2) Использование datetime и 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) Просто используя дату и время: застревает на 2%
In [14]: df['trd_exctn_dt'].map_partitions(pd.to_datetime).compute()
[ ] | 2% Completed | 2min 20.3s
Кроме того, я хотел бы иметь возможность указывать формат даты, как я бы сделал в пандах:
pd.to_datetime(df['time'], format = '%m%d%Y'
Обновление 2
После обновления до Dask 0.11 у меня больше нет проблем с ключевым словом meta. Тем не менее, я не могу получить более 2% на фрейме данных 2 ГБ.
df['trd_exctn_dt'].map_partitions(pd.to_datetime, meta=meta).compute()
[ ] | 2% Completed | 30min 45.7s
Обновление 3
работал лучше таким образом:
def parse_dates(df):
return pd.to_datetime(df['time'], format = '%m/%d/%Y')
df.map_partitions(parse_dates, meta=meta)
Я не уверен, правильный это подход или нет
dtype <class 'pandas._lib.tslib.Timestamp'> not understood
. Однако работает сmeta = ('time', np.datetime64)
31.05.2017meta = ('time', 'datetime64[ns]')
19.07.2017