pandas: сортировка, смена индекса и новые метки

В таблице сотрудников нужно сначала упорядочить строки, а затем получить их по идентификаторам. В заготовке перепутаны направление сортировки, столбец индекса и заполнение отсутствующих меток. Исправьте программу и проверьте результат на входных данных.

Программа курса «NumPy и pandas: практический тренажёр».

Найди и исправь: три ошибки в sort_values, set_index и reindex

Что уже дано

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

В редакторе уже есть сломанный код. В нём ровно три ошибки в трёх независимых строках:

  1. sort_values сортирует DataFrame по двум столбцам, но направление для второго ключа ('score') указано как True (по возрастанию), хотя нужно False (по убыванию).
  2. set_index вызывается с аргументом 'dept', хотя индексом должен стать столбец 'emp_id'.
  3. reindex вызывается без fill_value, из-за чего отсутствующие метки заполняются NaN вместо 0.

Каждая ошибка — в отдельной строке кода. Исправьте все три.

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

Исправьте три ошибки так, чтобы программа:

  1. Читала из stdin целое число n — количество строк таблицы.
  2. Читала следующие n строк; каждая содержит три токена через пробел: emp_id (строка без пробелов), dept (строка без пробелов), score (целое число). Пример строки: E01 Sales 85.
  3. Строила pd.DataFrame из словаря списков с ключами 'emp_id', 'dept', 'score'.
  4. Сортировала DataFrame сначала по 'dept' по возрастанию, затем при равенстве по 'score' по убыванию (ascending=[True, False]) и сохраняла в df2.
  5. Выводила list(df2.columns) — первая строка вывода.
  6. Назначала столбец 'emp_id' индексом df2 и сохраняла в df3.
  7. Читала из stdin последнюю строку — метки для reindex через пробел.
  8. Вызывала df3.reindex(new_order, fill_value=0) и сохраняла в df4. Выводила сумму столбца 'score' в df4 как целое число — вторая строка вывода.

Ввод и вывод

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

Формат ввода

n
emp_id1 dept1 score1
...
emp_idN deptN scoreN
мет1 мет2 ... метK

Последняя строка — метки для reindex через пробел. Некоторые метки могут отсутствовать в DataFrame — для них fill_value=0.

Дополнительные ограничения: Значения emp_id попарно различны.

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

Ровно две строки:

['emp_id', 'dept', 'score']
<целое число — сумма score после reindex>

Пример

Ввод
3
E01 Sales 85
E02 HR 90
E03 Sales 70
E01 E03 E99
Вывод
['emp_id', 'dept', 'score']
155
РешениеPython

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

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

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