Я пытаюсь скорректировать дату, добавив указанное количество рабочих дней, но мне хотелось бы скорректировать дату на выходные. Однако выходные дни могут меняться в зависимости от рекорда. Итак, если мой набор данных выглядит так:
┌────────────┬────────┬──────────┬──────────┐
│ 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
Добавить рабочие дни, включая выходные ⇐ Python
Программы на Python
1737415046
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'
Подробнее здесь: [url]https://stackoverflow.com/questions/79372830/add-business-days-including-weekends[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия