pandas transform count: фильтрация групп по числу строк

Фильтрация отделов по числу сотрудников через transform('count')

Что уже дано

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

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

Напишите программу, которая:

  1. Читает из stdin целое число n — количество строк таблицы.
  2. Читает следующие n строк; каждая содержит три токена через пробел: dept (строка без пробелов), employee (строка без пробелов), hours (целое число). Пример строки: Dev Alpha 40.
  3. Создаёт pd.DataFrame с именем df из словаря списков с ключами 'dept', 'employee', 'hours'.
  4. Добавляет столбец 'dept_hours_sum' — суммарные часы по каждому dept для каждой строки — через df.groupby('dept')['hours'].transform('sum').
  5. Добавляет столбец 'dept_count' — число сотрудников в каждом dept для каждой строки — через df.groupby('dept')['hours'].transform('count').
  6. Читает из stdin целое число min_count — минимальный размер отдела.
  7. Строит булевую маску mask = df['dept_count'] >= min_count и создаёт df_big = df.loc[mask].
  8. Выводит в stdout ровно четыре блока:
  • Блок 1. Строку dept_hours_sum:, затем значения столбца 'dept_hours_sum' через пробел (в порядке исходных строк).
  • Блок 2. Строку dept_count:, затем значения столбца 'dept_count' через пробел.
  • Блок 3. Строку big_dept rows: <k>, где k — число строк в df_big.
  • Блок 4. Для каждой строки df_big (в порядке исходного индекса) одну строку вида <dept> <employee> <hours>.

Ввод и вывод

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

Ограничения: n >= 1.

Формат ввода

n
dept1 employee1 hours1
...
deptN employeeN hoursN
min_count

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

dept_hours_sum:
<v1> <v2> ... <vN>
dept_count:
<c1> <c2> ... <cN>
big_dept rows: <k>
<dept> <employee> <hours>
...

Пример

Ввод
8
Dev Alpha 40
Dev Beta 30
Dev Gamma 50
HR Onboard 20
HR Recruit 25
HR Policy 15
QA Smoke 40
QA Regress 40
3
Вывод
dept_hours_sum:
120 120 120 60 60 60 80 80
dept_count:
3 3 3 3 3 3 2 2
big_dept rows: 6
Dev Alpha 40
Dev Beta 30
Dev Gamma 50
HR Onboard 20
HR Recruit 25
HR Policy 15
РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

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

Связанные задачи