pandas: типы столбцов и очистка по правилу

Временные столбцы: парсинг, .dt-компоненты, длительности и фильтрация

Содержание курса

Архив заказов: год, месяц, день недели и фильтрация по месяцу

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.

Что нужно сделать

Напишите программу, которая обрабатывает архив заказов:

  1. Читает из stdin целое число n — количество строк архива.
  2. Читает следующие n строк; каждая содержит два токена через пробел: order_id (целое число) и order_date (строка вида YYYY-MM-DD). Пример строки: 101 2024-03-15.
  3. Создаёт pd.DataFrame с именем df со столбцами 'order_id' (int) и 'order_date' (str).
  4. Преобразует столбец 'order_date' в datetime64[ns] через pd.to_datetime. Сохраняет обратно в df['order_date'].
  5. Создаёт столбец 'year' через df['order_date'].dt.year, столбец 'month' через df['order_date'].dt.month, столбец 'weekday' через df['order_date'].dt.dayofweek.
  6. Читает из stdin целое число target_month — номер месяца для фильтрации (от 1 до 12).
  7. Фильтрует строки, где month == target_month, через df.loc[mask]. Сохраняет в filtered.
  8. Выводит в stdout ровно len(filtered) + 2 строк:
  • Строки 1…len(filtered): для каждой строки filtered (в порядке исходного DataFrame) одну строку вида <order_id> <year> <month> <weekday>.
  • Предпоследняя строка: count=<len(filtered)>.
  • Последняя строка: weekdays=<список>, где список — значения weekday отфильтрованных строк через запятую и пробел, в порядке исходного DataFrame. Если filtered пуст — выведите weekdays=.

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

n
order_id YYYY-MM-DD
...
target_month

Дополнительные ограничения: n >= 1; таблица содержит явно описанные в условии столбцы.

Формат вывода

<order_id> <year> <month> <weekday>
...
count=<k>
weekdays=<w1>, <w2>, ...
О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    5
    101 2024-01-08
    102 2024-03-15
    103 2024-03-22
    104 2024-05-01
    105 2024-03-01
    3
    
    Ожидаемый вывод
    102 2024 3 4
    103 2024 3 4
    105 2024 3 4
    count=3
    weekdays=4, 4, 4
    
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

Отправьте решение, чтобы увидеть результаты тестов.