Зачем добавляют validate="one_to_one" в pd.merge(a, b, on="id", how="left", validate="one_to_one")?

AЧтобы автоматически привести типы столбцов ключа id к одинаковому виду перед слиянием таблиц
BЧтобы удалить из результата строки с NaN после соединения и вернуть только полные совпадения по ключу
CЧтобы гарантировать сортировку результата соединения по ключу id в порядке возрастания значений
DЧтобы проверить, что ключ id уникален в обеих таблицах, и получить ошибку, если это не так
Правильный ответ. Параметр validate помогает ловить ошибки кардинальности соединения (one_to_one, one_to_many).

Разбор

validate="one_to_one" сообщает pandas, что вы ожидаете уникальный ключ id и в a, и в b. Если на практике обнаружатся дубликаты ключа хотя бы с одной стороны, .merge() выбросит исключение MergeError. Это полезно при сборке аналитических витрин, чтобы заранее защититься от неожиданного размножения строк. Параметр не приводит типы, не убирает NaN и не сортирует результат — за это отвечают другие шаги.

Проверь себя · 1/3разбор после ответа
В df есть столбец age. Какие значения age попадут в результат df[(df["age"] >= 18) & (df["age"] <= 25)]?
Тренировать Python в Telegram

Ещё вопросы по теме «Pandas и DataFrame»