merge — универсальный, работает по любым колонкам (on="col"). join — только по индексам или одной общей колонке. На собесе используй merge как default — он покроет 95% случаев.
df1.merge(df2, on="key", how="left", indicator=True).query("_merge == \"left_only\"") — оставит только строки из df1, для которых нет совпадений в df2. Эквивалент LEFT JOIN ... WHERE df2.key IS NULL.
merge — соединение по ключу (горизонтально, как SQL JOIN). concat — склейка таблиц целиком (вертикально как UNION, или горизонтально по индексу).
Параметр validate="one_to_many" или "one_to_one" — pandas упадёт с ошибкой если ожидание не соблюдается. Это лучший способ найти баг в данных до того как он попадёт в отчёт.
df1.merge(df2, on="a").merge(df3, on="b") — цепочка merge. Или через df.set_index() + df.join(other.set_index()) если ключи — индексы.
Pandas: основы · Pandas groupby · Pandas time series · NumPy векторизация · scipy: A/B-тесты · sklearn для аналитика · Графики: matplotlib / seaborn
JOIN-запросы · CTE (Common Table Expressions)
Открыть весь Python-тренажёр (532 задач) →