Хотя для этого может быть несколько способов, один из которых был упомянут в комментариях, но я обычно делаю это, используя isin :
Учитывая два кадра данных:
import pandas as pd
df1 = pd.DataFrame()
df1['C1'] = ['a', 'b', 'c', 'd', 'e', 'f']
df1['C2'] = ['b', 'c', 'x', 'w', 'h', 'j']
df2 = pd.DataFrame()
df2 ['C1'] = ['x', 'a', 'c', 'f']
df2 ['C2'] = ['w', 'h', 'd', 'j']
Фреймы данных выглядят так:
In [144]: df1
Out[144]:
C1 C2
0 a b
1 b c
2 c x
3 d w
4 e h
5 f j
In [145]: df2
Out[145]:
C1 C2
0 x w
1 a h
2 c d
3 f j
Теперь я могу использовать isin для поиска всего, что я хочу, во всех столбцах кадра данных.
x = (df1[df1.C1.isin(df2.C1) & df1.C2.isin(df2.C2)])
Выход:
C1 C2
5 f j
Если вы хотите выполнить поиск только по одному столбцу, вы можете удалить одно из условий до или после &
:
x = (df1[df1.C1.isin(df2.C1)])
Выход:
C1 C2
0 a b
2 c x
5 f j