Используйте GroupBy.size
с Series.nlargest
и получите значения индекса:
N = 2
a = df.groupby(['Col_1','col_2']).size().nlargest(N).index.tolist()
print (a)
[('B', 'C'), ('C', 'B')]
При необходимости новый DataFrame
используйте MultiIndex.to_frame
:
df1 = df.groupby(['Col_1','col_2']).size().nlargest(2).index.to_frame(index=False)
print (df1)
Col_1 col_2
0 B C
1 C B
При необходимости подсчитать все вхождения:
df2 = df.groupby(['Col_1','col_2']).size().reset_index(name='count')
print (df2)
Col_1 col_2 count
0 A N 1
1 A S 1
2 B C 2
3 C B 2
4 N A 1
5 S A 1