Короткий ответ
pd.merge(df1, df2, on='key', how='inner') объединяет строки двух таблиц по совпадающим значениям ключевого столбца, оставляя по умолчанию только строки, где ключ найден в обеих таблицах.
Как это работает подробнее
merge сопоставляет строки по значениям указанного столбца (или нескольких столбцов в on), а параметр how задаёт тип соединения: inner оставляет только совпадения, left/right/outer управляют тем, что делать со строками без пары.
Пример кода
Пример Python
import pandas as pd
orders = pd.DataFrame({'order_id': [1, 2, 3], 'user_id': [10, 20, 10]})
users = pd.DataFrame({'user_id': [10, 20], 'country': ['RU', 'US']})
merged = pd.merge(orders, users, on='user_id', how='inner')
print(merged)Что использовать на практике
- На практике: перед merge полезно проверить df1['key'].nunique() и df2['key'].nunique() относительно длины таблиц, чтобы понять, ожидается ли связь один-к-одному или один-ко-многим, и сравнить размер результата с ожидаемым.
- Проверка: итоговая таблица должна содержать 3 строки (все заказы имеют совпадающего пользователя), с добавленным столбцом country.
Подводные камни
- Частые ошибки: не проверяют тип и регистр ключевого столбца в обеих таблицах (например, int vs str или 'RU' vs 'ru'), из-за чего merge не находит совпадений и теряет строки без видимой ошибки; не указывают явно how и получают inner по умолчанию, теряя строки, которые должны были остаться.