Вы можете использовать следующий базовый синтаксис для выполнения внутреннего соединения в pandas:
import pandas as pd
df1.merge(df2, on='column_name', how='inner')
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: как сделать внутреннее соединение в Pandas
Предположим, у нас есть следующие два кадра данных pandas, которые содержат информацию о различных баскетбольных командах:
import pandas as pd
#create DataFrame
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
'points': [18, 22, 19, 14, 14, 11, 20, 28]})
df2 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'G', 'H'],
'assists': [4, 9, 14, 13, 10, 8]})
#view DataFrames
print(df1)
team points
0 A 18
1 B 22
2 C 19
3 D 14
4 E 14
5 F 11
6 G 20
7 H 28
print(df2)
team assists
0 A 4
1 B 9
2 C 14
3 D 13
4 G 10
5 H 8
Мы можем использовать следующий код для выполнения внутреннего соединения, которое сохраняет только строки, в которых имя команды появляется в обоих кадрах данных:
#perform left join
df1.merge(df2, on='team', how='inner')
team points assists
0 A 18 4
1 B 22 9
2 C 19 14
3 D 14 13
4 G 20 10
5 H 28 8
Единственные строки, содержащиеся в объединенном кадре данных, — это строки, в которых имя команды отображается в обоих кадрах данных.
Обратите внимание, что две команды были исключены (команды E и F), поскольку они не появились в обоих кадрах данных.
Обратите внимание, что вы также можете использовать pd.merge() со следующим синтаксисом, чтобы вернуть точно такой же результат:
#perform left join
pd.merge(df1, df2, on='team', how='inner')
team points assists
0 A 18 4
1 B 22 9
2 C 19 14
3 D 14 13
4 G 20 10
5 H 28 8
Обратите внимание, что этот объединенный DataFrame совпадает с кадром из предыдущего примера.
Примечание.Полную документацию по функции слияния можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Как сделать левое соединение в Pandas
Как объединить Pandas DataFrames в несколько столбцов
Pandas Join и Merge: в чем разница?