pandas: сортировка, смена индекса и новые метки
В таблице сотрудников нужно сначала упорядочить строки, а затем получить их по идентификаторам. В заготовке перепутаны направление сортировки, столбец индекса и заполнение отсутствующих меток. Исправьте программу и проверьте результат на входных данных.
Найди и исправь: три ошибки в sort_values, set_index и reindex
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет.
В редакторе уже есть сломанный код. В нём ровно три ошибки в трёх независимых строках:
sort_valuesсортирует DataFrame по двум столбцам, но направление для второго ключа ('score') указано какTrue(по возрастанию), хотя нужноFalse(по убыванию).set_indexвызывается с аргументом'dept', хотя индексом должен стать столбец'emp_id'.reindexвызывается безfill_value, из-за чего отсутствующие метки заполняютсяNaNвместо0.
Каждая ошибка — в отдельной строке кода. Исправьте все три.
Что нужно сделать
Исправьте три ошибки так, чтобы программа:
- Читала из
stdinцелое числоn— количество строк таблицы. - Читала следующие
nстрок; каждая содержит три токена через пробел:emp_id(строка без пробелов),dept(строка без пробелов),score(целое число). Пример строки:E01 Sales 85. - Строила
pd.DataFrameиз словаря списков с ключами'emp_id','dept','score'. - Сортировала DataFrame сначала по
'dept'по возрастанию, затем при равенстве по'score'по убыванию (ascending=[True, False]) и сохраняла вdf2. - Выводила
list(df2.columns)— первая строка вывода. - Назначала столбец
'emp_id'индексомdf2и сохраняла вdf3. - Читала из
stdinпоследнюю строку — метки дляreindexчерез пробел. - Вызывала
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
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- Pandas setindex: останется ли исходный столбец
- Управление метками: rename, sortvalues, setindex, resetindex, reindex — задача по NumPy и pandas
- pandas rename, sortvalues, setindex и reindex в одном пайплайне
- Pandas rename, reindex и resetindex: задача на индекс
- pandas: индекс, сортировка и reindex с заполнением новых строк
- pandas Series из словаря: index, shape и dtype
