Временные столбцы: парсинг, .dt-компоненты, длительности и фильтрация
Содержание курса
Найди и исправь: три ошибки в .dt-компонентах и переводе Timedelta в дни
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет.
В редакторе уже есть сломанный код. В нём ровно три ошибки в трёх независимых строках:
- Столбец
'month'вычисляется черезdf['start'].dt.month— но перед этимdf['start']не преобразован вdatetime64[ns], он остаётся строковым (object). Нужно добавитьpd.to_datetimeдо обращения к.dt. - День недели извлекается через
df['start'].dt.day, хотя нужен день недели — используйтеdt.dayofweek. - Длительность в днях вычисляется через
df['duration'].dt.days, хотя этот атрибут возвращает только целую часть суток (часы теряются). Нужно использовать.dt.total_seconds() / 86400.
Каждая ошибка находится в отдельной строке. Исправьте все три.
Что нужно сделать
Исправьте три ошибки так, чтобы программа:
- Читала из
stdinцелое числоn— количество строк. - Читала следующие
nстрок; каждая содержит пять токенов через пробел:id, дату начала, время начала, дату конца и время конца. Формат:id YYYY-MM-DD HH:MM YYYY-MM-DD HH:MM— итого 5 токенов; токены[1]+[2]образуютstart, токены[3]+[4]—end. - Строила
pd.DataFrameсо столбцами'id','start'(str),'end'(str). - Преобразовывала
'start'и'end'вdatetime64[ns]черезpd.to_datetime. - Создавала столбец
'month'черезdf['start'].dt.month. - Создавала столбец
'weekday'черезdf['start'].dt.dayofweek. - Вычисляла столбец
'duration'=df['end'] - df['start']и столбец'days'=df['duration'].dt.total_seconds() / 86400. - Для каждой строки выводила:
<id> <month> <weekday> <days>, гдеdays— с округлением до 4 знаков.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
n id YYYY-MM-DD HH:MM YYYY-MM-DD HH:MM ...
Дополнительные ограничения: n >= 1; таблица содержит явно описанные в условии столбцы.
Формат вывода
<id> <month> <weekday> <days>
...
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
- Тест 1Ввод
3 1 2024-01-10 08:00 2024-01-10 10:30 2 2024-03-05 14:00 2024-03-05 18:00 3 2024-04-20 07:00 2024-04-21 07:00
Ожидаемый вывод1 1 2 0.1042 2 3 1 0.1667 3 4 5 1.0
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
