Временные столбцы: парсинг, .dt-компоненты, длительности и фильтрация
Содержание курса
Бронирование переговорных: длительность в часах и фильтрация по дате
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая обрабатывает журнал бронирования переговорных комнат:
- Читает из
stdinцелое числоn— количество записей. - Читает следующие
nстрок. Каждая строка содержит пять токенов через пробел:
booking_id(целое число)- дата начала
YYYY-MM-DD - время начала
HH:MM - дата конца
YYYY-MM-DD - время конца
HH:MM
Объедините токены [1] и [2] через пробел — это строка start; токены [3] и [4] — строка end.
- Создаёт
pd.DataFrameс именемdfсо столбцами'booking_id'(int),'start'(str),'end'(str). - Преобразует оба строковых столбца в
datetime64[ns]черезpd.to_datetime. - Создаёт столбец
'start_day'черезdf['start'].dt.day, столбец'start_hour'черезdf['start'].dt.hour. - Вычисляет столбец
'duration_h'— длительность бронирования в часах как(df['end'] - df['start']).dt.total_seconds() / 3600. Значения могут быть дробными. - Читает из
stdinстроку с двумя токенами через пробел:date_fromиdate_to— границы фильтрации (строки видаYYYY-MM-DD). - Фильтрует строки, где
start >= date_fromиstart < date_to, черезdf.loc[mask]. Сохраняет результат вfiltered. - Выводит в
stdoutровноlen(filtered) + 2строк:
- Строки 1…
len(filtered): для каждой строкиfiltered(в порядке исходного DataFrame) одну строку вида<booking_id> <start_day> <start_hour> <duration_h>, гдеduration_hокруглён до 2 знаков после запятой. - Предпоследняя строка:
count=<len(filtered)>. - Последняя строка:
total_hours=<значение>— суммаduration_hпо отфильтрованным строкам, округлённая до 2 знаков; еслиfilteredпуст — выведитеtotal_hours=0.00.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
n booking_id YYYY-MM-DD HH:MM YYYY-MM-DD HH:MM ... date_from date_to
Дополнительные ограничения: n >= 1; таблица содержит явно описанные в условии столбцы.
Формат вывода
<booking_id> <start_day> <start_hour> <duration_h>
...
count=<k>
total_hours=<s>
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
- Тест 1Ввод
5 1 2024-01-10 09:00 2024-01-10 11:30 2 2024-02-20 14:00 2024-02-20 16:00 3 2024-03-05 08:30 2024-03-05 10:00 4 2024-03-18 13:00 2024-03-18 14:30 5 2024-04-02 10:00 2024-04-02 12:00 2024-02-01 2024-04-01
Ожидаемый вывод2 20 14 2.00 3 5 8 1.50 4 18 13 1.50 count=3 total_hours=5.00
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
