Задача курса

pandas .dt: год, месяц, день недели и фильтрация

Курс «NumPy и pandas: практический тренажёр» · урок «Временные столбцы: парсинг, .dt-компоненты, длительности и фильтрация»

Закрепите работу с datetime-столбцом и фильтрацию таблицы по вычисленным компонентам даты.

Условие

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

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через 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

Ввод
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

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется