Основной проблемой, как представляется, является исключительное использование pd.Series.apply
. Но apply
- это просто строковый цикл уровня Python . Это будет медленно в Pandas и Dask. Для кода, критичного к производительности, следует отдавать предпочтение операциям со столбцами.
Фактически, dask.dataframe
поддерживает полезное подмножество API Pandas. Вот несколько примеров: -
Избегать строковых операций
Сначала преобразуйте данные в числовые типы; затем выполните векторизованные операции. Например:
dd['YEAR'] = dd['YEAR'].astype(int)
dd['YEAR'] = dd['YEAR'].mask(dd['YEAR'] >= 0, 20)
dd['YEAR'] = dd['YEAR'].mask(dd['YEAR'] < 0, 19)
Конвертировать в datetime
Если у вас есть datetime
строки в соответствующем формате:
df['ARCHDATE'] = df['ARCHDATE'].astype('M8[us]')
См. Также dask dataframe, как преобразовать столбец в to_datetime .