Добавить рабочие дни, включая выходныеPython

Программы на Python
Ответить
Anonymous
 Добавить рабочие дни, включая выходные

Сообщение Anonymous »

Я пытаюсь скорректировать дату, добавив указанное количество рабочих дней, но мне хотелось бы скорректировать дату на выходные. Однако выходные дни могут меняться в зависимости от рекорда. Итак, если мой набор данных выглядит так:
┌────────────┬────────┬──────────┬──────────┐
│ DT ┆ N_DAYS ┆ WKND1 ┆ WKND2 │
│ --- ┆ --- ┆ --- ┆ --- │
│ date ┆ i64 ┆ str ┆ str │
╞════════════╪════════╪══════════╪══════════╡
│ 2025-01-02 ┆ 2 ┆ Saturday ┆ Sunday │
│ 2025-01-09 ┆ 2 ┆ Friday ┆ Saturday │
│ 2025-01-10 ┆ 2 ┆ Saturday ┆ null │
│ 2025-01-15 ┆ 1 ┆ Saturday ┆ Sunday │
└────────────┴────────┴──────────┴──────────┘

Могу подать заявку:
df = df.with_columns(pl.col('DT').dt.add_business_days(pl.col('N_DAYS')).alias('NEW_DT'))
┌────────────┬────────┬──────────┬──────────┬────────────┐
│ DT ┆ N_DAYS ┆ WKND1 ┆ WKND2 ┆ NEW_DT │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ date ┆ i64 ┆ str ┆ str ┆ date │
╞════════════╪════════╪══════════╪══════════╪════════════╡
│ 2025-01-02 ┆ 2 ┆ Saturday ┆ Sunday ┆ 2025-01-06 │
│ 2025-01-09 ┆ 2 ┆ Friday ┆ Saturday ┆ 2025-01-13 │
│ 2025-01-10 ┆ 2 ┆ Saturday ┆ null ┆ 2025-01-14 │
│ 2025-01-15 ┆ 1 ┆ Saturday ┆ Sunday ┆ 2025-01-16 │
└────────────┴────────┴──────────┴──────────┴────────────┘

Однако я пытался создать кортеж Week_mask для каждой записи на основе столбцов WKND1, WKND2 и применить его как часть моего преобразования поэтому для первой записи кортеж должен быть:
(True, True, True, True, True, False, False)

Вторая запись будет:
(True, True, True, True, False, False, True)

и так далее.
На основании приведенного ниже примера фактический ответ должен быть:
┌────────────┬────────┬──────────┬──────────┬────────────┐
│ DT ┆ N_DAYS ┆ WKND1 ┆ WKND2 ┆ NEW_DT │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ date ┆ i64 ┆ str ┆ str ┆ date │
╞════════════╪════════╪══════════╪══════════╪════════════╡
│ 2025-01-02 ┆ 2 ┆ Saturday ┆ Sunday ┆ 2025-01-06 │
│ 2025-01-09 ┆ 2 ┆ Friday ┆ Saturday ┆ 2025-01-14 │
│ 2025-01-10 ┆ 2 ┆ Saturday ┆ null ┆ 2025-01-13 │
│ 2025-01-15 ┆ 1 ┆ Saturday ┆ Sunday ┆ 2025-01-16 │
└────────────┴────────┴──────────┴──────────┴────────────┘

Как сгенерировать кортеж на основе значений столбца и применить его динамически?
Я попробовал создать новый столбец, содержащий список, и использовать что-то вроде это:
df = df.with_columns(pl.col('DT').dt.add_business_days(pl.col('N_DAYS'), week_mask=pl.col('W_MASK')).alias('NEW_DT'))

но получаю:
TypeError: argument 'week_mask': 'Expr' object cannot be converted to 'Sequence'


Подробнее здесь: https://stackoverflow.com/questions/793 ... g-weekends
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»