Если вы ищете точное совпадение всех трех столбцов, почему бы не попытаться объединить эти три столбца с четвертым столбцом:
df['col4']=df['col1']+df['col2']+df['col3']
, который возвращает:
col1 col2 col3 col4
0 A Z category1 AZcategory1
1 A,B,C,D Z category1 A,B,C,DZcategory1
2 E,F,G,H,I T category4 E,F,G,H,ITcategory4
3 A,E,H T category4 A,E,HTcategory4
4 A,E,H T category5 A,E,HTcategory5
5 A,E,H U category4 A,E,HUcategory4
И вы можете сравнить 'col4' со связанными строками в вашем списке list_join
.
list_join=[''.join(item) for item in l]
, который выглядит следующим образом:
['A,B,C,DZcategory1', 'A,B,CZcategory2', 'E,F,G,HTcategory4', 'A,E,HTcategory4']
И затем объединить на основе общих значений:
common =df[df['col4'].isin(list_join)]
Преимущество состоит в том, что вам нужно искать только в одном столбце вместо всех трех, что значительно ускоряет вашу работу. Недостатком было бы меньшая гибкость.