У меня есть pandas фрейм данных, который выглядит следующим образом:
df = pd.DataFrame({'name': ['bob', 'time', 'jane', 'john', 'andy'], 'favefood': [['kfc', 'mcd', 'wendys'], ['mcd'], ['mcd', 'popeyes'], ['wendys', 'kfc'], ['tacobell', 'innout']]})
-------------------------------
name | favefood
-------------------------------
bob | ['kfc', 'mcd', 'wendys']
tim | ['mcd']
jane | ['mcd', 'popeyes']
john | ['wendys', 'kfc']
andy | ['tacobell', 'innout']
Для каждого человека я хочу выяснить, сколько favefood других людей пересекаются с их собственным. Т.е. для каждого человека я хочу узнать, сколько других людей имеют непустое пересечение с ними.
Полученный кадр данных будет выглядеть следующим образом:
------------------------------
name | overlap
------------------------------
bob | 3
tim | 2
jane | 2
john | 1
andy | 0
Проблема в том, что у меня есть около 2 миллионов строк данных. Единственный способ, которым я могу думать об этом, был бы через вложенный for-l oop - т.е. для каждого человека, go через весь фрейм данных, чтобы увидеть, что перекрывается (это было бы крайне неэффективно). Будет ли в любом случае сделать это более эффективно, используя запись pandas? Спасибо!