Использование product
обоих columns
имен, проверка членства по Series.isin
с количеством True
с sum
в понимании списка для кортежей и передачей в DataFrame
конструктор:
from itertools import product
L = [((a, b), dfA[a].isin(dfB[b]).sum()) for a, b in product(dfA.columns, dfB.columns)]
df = pd.DataFrame(L, columns=['Columns','Nr'])
print (df)
Columns Nr
0 (Alpha, Teta) 2
1 (Alpha, heta) 0
2 (Alpha, hofa) 0
3 (Beta, Teta) 0
4 (Beta, heta) 1
5 (Beta, hofa) 0
6 (Gamma, Teta) 0
7 (Gamma, heta) 0
8 (Gamma, hofa) 2
Очень похожее решение для 3 выходных столбцов:
L = [(a, b, dfA[a].isin(dfB[b]).sum()) for a, b in product(dfA.columns, dfB.columns)]
df = pd.DataFrame(L, columns=['col1','col2','Nr'])
print (df)
col1 col2 Nr
0 Alpha Teta 2
1 Alpha heta 0
2 Alpha hofa 0
3 Beta Teta 0
4 Beta heta 1
5 Beta hofa 0
6 Gamma Teta 0
7 Gamma heta 0
8 Gamma hofa 2