Дубли: duplicated и drop_duplicates по ключевым столбцам
Содержание курса
keep='first' vs keep='last': сравнение сохранённых значений после дедупликации
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая сравнивает результаты дедупликации с keep='first' и keep='last' на таблице измерений:
- Читает из
stdinцелое числоn— количество строк таблицы. - Читает следующие
nстрок; каждая содержит три токена через пробел:device(строка без пробелов),date(строка видаYYYY-MM-DD),reading(целое число). Создаётpd.DataFrameс именемdfи столбцами'device','date','reading'. - Шаг A. Применяет
df.drop_duplicates(subset=['device', 'date'], keep='first'), сохраняет вdf_first. Выводитfirst_rows=<n>— число строк результата. - Шаг B. Применяет
df.drop_duplicates(subset=['device', 'date'], keep='last'), сохраняет вdf_last. Выводитlast_rows=<n>— число строк результата. - Шаг C. Проверяет уникальность обоих результатов. Выводит
first_dups=<k>иlast_dups=<k>, гдеk— результатdf_first.duplicated(subset=['device', 'date']).sum()и аналогично дляdf_last. - Шаг D. Для каждой пары
(device, date), которая встречалась в исходномdfболее одного раза (в порядке первого появления вdf_firstпо индексу), выводит одну строку вида<device> <date> first=<r1> last=<r2>, гдеr1— значение'reading'изdf_firstдля этой пары,r2— изdf_last.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
n device1 date1 reading1 device2 date2 reading2 ...
Дополнительные ограничения: n >= 1; таблица содержит явно описанные в условии столбцы.
Формат вывода
first_rows=<n>
last_rows=<n>
first_dups=<k>
last_dups=<k>
<device> <date> first=<r1> last=<r2>
...
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
- Тест 1Ввод
7 S1 2024-01-01 10 S2 2024-01-01 20 S1 2024-01-01 11 S3 2024-01-02 30 S2 2024-01-01 21 S1 2024-01-03 12 S3 2024-01-02 31
Ожидаемый выводfirst_rows=4 last_rows=4 first_dups=0 last_dups=0 S1 2024-01-01 first=10 last=11 S2 2024-01-01 first=20 last=21 S3 2024-01-02 first=30 last=31
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
