Если необходимо сравнить каждое значение отдельно, преобразуйте table2
в 1d
массив:
a = table1.isin(table2.values.ravel())
print (a)
a b
0 True True
1 True True
2 False False
3 True True
4 True True
При необходимости сравните каждую строку отдельно:
a = (table1.apply(tuple, 1).isin(table2.apply(tuple, 1)))
Или:
a = (table1.astype(str).apply('###'.join, 1).isin(table2.astype(str).apply('###'.join, 1).))
print (a)
0 True
1 True
2 False
3 True
4 True
dtype: bool
Для лучшего объяснения входные данные изменены:
table1 = pd.DataFrame({'a':[1, 2, 5, 3, 4],
'b':['d', 'b', 'e', 'c', 'd']})
table2 = pd.DataFrame({'a':[1, 4, 3, 6, 2],
'b':['a', 'd', 'c', 'f', 'b']})
print (table1)
a b
0 1 d -> changed to d
1 2 b
2 5 e
3 3 c
4 4 d
print (table2)
a b
0 1 a
1 4 d
2 3 c
3 6 f
4 2 b
a = table1.isin(table2.values.ravel())
print (a)
a b
0 True True d exist in table2, so True
1 True True
2 False False
3 True True
4 True True
a = (table1.apply(tuple, 1).isin(table2.apply(tuple, 1)))
print (a)
0 False -> comparing 1-a with 1-b return False
1 True
2 False
3 True
4 True
dtype: bool