Pandas rename, reindex и resetindex: задача на индекс
Индекс DataFrame хранит метки строк. rename меняет метки, reindex задаёт новый состав и порядок, а reset_index переносит индекс в обычные столбцы или удаляет его при соответствующем параметре.
Порядок операций влияет на результат: новые метки должны существовать к моменту повторной индексации. Отдельно различайте заполнение новых строк и пропуски, которые уже находились в исходных данных.
Проверьте решение без регистрации. Объяснения и последовательная практика — в курсе «NumPy и pandas: практический тренажёр».
rename строк, reindex с fill_value и reset_index: три операции над именованным индексом
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая выполняет три операции над DataFrame с именованным индексом строк:
- Читает из
stdinцелое числоn— количество строк таблицы. - Читает следующие
nстрок; каждая содержит два токена через пробел:имя(строка без пробелов) иscore(целое число). Строитpd.DataFrameс одним столбцом'score'и индексом из имён; индекс называет'name'черезdf.index.name = 'name'. - Читает строку с двумя токенами через пробел:
old_labelиnew_label— старая и новая метка строки для переименования. - Шаг A. rename строк. Вызывает
df.rename(index={old_label: new_label})и сохраняет вdf2. Выводит одну строку:renamed_index=<list(df2.index)>. - Читает строку с токенами через пробел — это
new_order, список меток для reindex (некоторые могут отсутствовать вdf2). - Шаг B. reindex. Вызывает
df2.reindex(new_order, fill_value=0)и сохраняет вdf3. Выводит одну строку:reindex_order=<list(df3.index)>. - Шаг C. reset_index. Вызывает
df3.reset_index()и сохраняет вdf4. Выводит одну строку:columns=<list(df4.columns)>. - Выводит одну строку:
score_sum=<int(df4['score'].sum())>.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
n имя1 score1 ... имяN scoreN old_label new_label мет1 мет2 ... метK
Последняя строка — метки для reindex. Некоторые могут отсутствовать в df2 — для них fill_value=0.
Дополнительные ограничения: Исходные значения name попарно различны; old_label встречается ровно один раз; new_label не совпадает ни с одной другой исходной меткой.
Формат вывода
Ровно четыре строки в порядке шагов A–C плюс итог:
renamed_index=[...]
reindex_order=[...]
columns=[...]
score_sum=<целое число>
Пример
- Ввод
3 Алиса 50 Боря 70 Вера 30 Вера Вера_new Боря Вера_new Алиса Дима
- Вывод
renamed_index=['Алиса', 'Боря', 'Вера_new'] reindex_order=['Боря', 'Вера_new', 'Алиса', 'Дима'] columns=['name', 'score'] score_sum=150
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- Управление метками: rename, sortvalues, setindex, resetindex, reindex — задача по NumPy и pandas
- pandas rename, sortvalues, setindex и reindex в одном пайплайне
- pandas: индекс, сортировка и reindex с заполнением новых строк
- pandas Series из словаря: index, shape и dtype
- pandas DataFrame из списка словарей: пример и задача
- Загрузка CSV с явными типами и датами через readcsv — задача по NumPy и pandas
