У меня большой набор данных временных рядов (350 миллионов строк, 15 ГБ) с датой и временем (полчаса).
Поэтому я использую dask для максимально возможной обработки и распараллеливания.
Я застрял в том, что должно быть тривиальным заданием.У меня есть список дат выходных, созданный с использованием пакета праздничных дней:
NSWholidays = holidays.Australia(years= [2010,2011,2012,2013,2014], state='NSW')
И у меня есть столбец «дата» в моем фрейме данных dask.
Я хочу добавить новыйстолбец с именем 'IsWorkDay'
, где 1 будет отображать дни, которые не являются выходными и с понедельника по пятницу, а 0 - выходные или праздничные дни.
Я пробовал десятки комбинаций, пытаясь найти необходимый синтаксис для dask.требования, чтобы парализовать это, но единственное решение, которое мне удалось получить, - это использовать .apply, что крайне медленно для задачи (несколько часов).Короче говоря, строка ниже работает, но слишком медленно:
SGSCData['IsWorkDay'] = SGSCData.apply(lambda row: int(row.weekday<6 and not row.Date in NSWholidays), axis=1, meta=(None, 'int64'))
Как я могу сделать это быстрее?
Заранее спасибо