merge и concat: соединение таблиц с контролем кардинальности
Содержание курса
Right join и outer с indicator: диагностика несовпавших строк
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая работает с двумя таблицами — курсов и записей студентов.
- Читает из
stdinцелое числоc— количество строк таблицы курсов. - Читает следующие
cстрок; каждая содержит два токена через пробел:course_id(целое число) иtitle(строка без пробелов). Создаётpd.DataFrameс именемcoursesи столбцами'course_id','title'. - Читает целое число
r— количество строк таблицы записей. - Читает следующие
rстрок; каждая содержит два токена через пробел:course_id(целое число) иstudent(строка без пробелов). Создаётpd.DataFrameс именемregistrationsи столбцами'course_id','student'. - Шаг A. right join. Выполняет
pd.merge(courses, registrations, on='course_id', how='right'). Выводит одну строку:right shape=<shape>, затем одну строку:right nan_title=<k>— число NaN в столбце'title'результата. - Шаг B. outer join с indicator. Выполняет
pd.merge(courses, registrations, on='course_id', how='outer', indicator=True). Выводит одну строку:outer both=<a> left_only=<b> right_only=<c>— число строк с каждым значением'_merge'. - Шаг C. NaN по оси right. В результате outer join из шага B подсчитывает число NaN в столбце
'student'и выводит одну строку:outer nan_student=<k>.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Ограничения: c >= 1, r >= 1.
Формат ввода
c course_id title ... r course_id student ...
Формат вывода
Ровно четыре строки в порядке шагов A–C:
right shape=(<rows>, <cols>)
right nan_title=<k>
outer both=<a> left_only=<b> right_only=<c>
outer nan_student=<k>
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Проверяется тестами (1)
- Тест 1Ввод
4 10 Python 20 SQL 30 Excel 40 Scala 5 10 Аня 10 Боря 20 Вера 50 Гена 50 Дина
Ожидаемый выводright shape=(5, 3) right nan_title=2 outer both=3 left_only=2 right_only=2 outer nan_student=2
Решение
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
