pandas: типы столбцов и очистка по правилу

Дубли: duplicated и drop_duplicates по ключевым столбцам

Содержание курса

keep='first' vs keep='last': сравнение сохранённых значений после дедупликации

Что уже дано

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

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

Напишите программу, которая сравнивает результаты дедупликации с keep='first' и keep='last' на таблице измерений:

  1. Читает из stdin целое число n — количество строк таблицы.
  2. Читает следующие n строк; каждая содержит три токена через пробел: device (строка без пробелов), date (строка вида YYYY-MM-DD), reading (целое число). Создаёт pd.DataFrame с именем df и столбцами 'device', 'date', 'reading'.
  3. Шаг A. Применяет df.drop_duplicates(subset=['device', 'date'], keep='first'), сохраняет в df_first. Выводит first_rows=<n> — число строк результата.
  4. Шаг B. Применяет df.drop_duplicates(subset=['device', 'date'], keep='last'), сохраняет в df_last. Выводит last_rows=<n> — число строк результата.
  5. Шаг C. Проверяет уникальность обоих результатов. Выводит first_dups=<k> и last_dups=<k>, где k — результат df_first.duplicated(subset=['device', 'date']).sum() и аналогично для df_last.
  6. Шаг 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)
  • Тест 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 секунд.

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