Сталкивался ли с Semi JOIN
Python
Junior
Без компании
Сталкивался ли с Semi JOIN
Ответы
Semi JOIN — это операция, которая возвращает строки из первой таблицы, для которых есть хотя бы одно совпадение во второй таблице, но без дублирования строк при множественных совпадениях. В SQL это можно реализовать через `EXISTS` или `IN`.
В Python, при работе с pandas, аналогом Semi JOIN будет использование `merge` с последующим удалением дубликатов или `isin()`:
```
import pandas as pd
# Пример данных
df1 = pd.DataFrame({'id': [1, 2, 3], 'name': ['A', 'B', 'C']})
df2 = pd.DataFrame({'id': [1, 1, 3], 'value': [10, 20, 30]})
# Semi JOIN через merge
semi_join = df1[df1['id'].isin(df2['id'])]
print(semi_join)
# Или через merge с indicator
merged = df1.merge(df2['id'].drop_duplicates(), on='id', how='inner')
print(merged)
```
Оба способа вернут только строки из `df1`, чьи `id` есть в `df2`, без дублирования.