Supposons que j'ai un dataframe de pandas géants comme ceci:Python: Trouver des liens communs entre les lignes Pandas dataframe
ID Text
12 [Apple, Zebra]
14 [Camel, Apple]
18 [Obama, Trump]
20 [Lincoln, Obama, Trump]
15 [Apple, Banana, Zebra]
"Texte" est une liste de chaînes. Je cherche un moyen de trouver les liens entre les lignes basées sur le texte, tels que ID 12 et 14 ont Apple en commun.
Donc ce que je voudrais idéalement avoir est:
ID Text Link
12 [Apple] [14]
12 [Apple, Zebra] [15]
18 [Obama, Trump] [20]
Ce que j'ai essayé jusqu'à présent: Itération à travers chaque élément de chaque liste et de faire un dictionnaire comme ceci:
{ 'Apple' : [12, 14], 'Obama' : [18, 20], 'Trump' : [18, 20], 'Zebra' : [12, 15], 'Camel' : [14], 'Lincoln' : [20], 'Banana' : [15] }
Cependant , puisque les données sont assez grandes, cela prend beaucoup de temps. Je suis à la recherche d'un moyen optimisé pour ce faire. Toutes les pensées et/ou l'aide sont appréciées.
Ma solution actuelle est vraiment simple, je pousse des éléments dans le dictionnaire avec leurs identifiants ("Link"), comme des tuples, et je vérifie s'ils sont déjà là. Dans lequel cas, je ajoute l'ID à la liste - "Lien". La complexité temporelle serait O (n^2) dans le nombre d'éléments. – Kirtiman
Je ne comprends pas bien votre solution, voulez-vous dire que je devrais faire de chaque liste "Texte" une intersection et vérifier les intersections entre cela et le reste? Mais cela semble être O (n^2) dans le nombre de rangées! – Kirtiman