Код: Выделить всё
df = pl.DataFrame({
"day": ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"],
"enabled": [True, True, True, True, True, False, False],
"start_time": ["09:00", "09:00", "09:00", "09:00", "09:00", "00:00", "00:00"],
"end_time": ["18:00", "18:00", "18:00", "18:00", "18:00", "00:00", "00:00"],
})
df = df.with_columns(start_time = pl.col("start_time").str.to_time("%H:%M"))
df = df.with_columns(end_time = pl.col("end_time").str.to_time("%H:%M"))
print(df)
Код: Выделить всё
shape: (7, 4)
┌───────────┬─────────┬────────────┬──────────┐
│ day ┆ enabled ┆ start_time ┆ end_time │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ bool ┆ time ┆ time │
╞═══════════╪═════════╪════════════╪══════════╡
│ monday ┆ true ┆ 09:00:00 ┆ 18:00:00 │
│ tuesday ┆ true ┆ 09:00:00 ┆ 18:00:00 │
│ wednesday ┆ true ┆ 09:00:00 ┆ 18:00:00 │
│ thursday ┆ true ┆ 09:00:00 ┆ 18:00:00 │
│ friday ┆ true ┆ 09:00:00 ┆ 18:00:00 │
│ saturday ┆ false ┆ 00:00:00 ┆ 00:00:00 │
│ sunday ┆ false ┆ 00:00:00 ┆ 00:00:00 │
└───────────┴─────────┴────────────┴──────────┘
Я предположил, что один из обходных путей — превратить start_time/end_time в pl.datetime (т. е. использовать некоторую постоянную дату), выполнить операцию, а затем разложить результат возвращается во времени. У этого есть один вариант, который проще гарантировать, что я не переполняю/не пропускаю (т. е. вычитаю 2 часа из 01:00 и получаю 23:00), но мне интересно, можно ли добавлять/вычитать часы/минуты ко времени в полярах?
Подробнее здесь: https://stackoverflow.com/questions/794 ... ime-column