Angenommen, ich habe einen Pandas Datenrahmen wie so:Python: Die Suche nach gemeinsamen Verbindungen zwischen Pandas Dataframe Reihen
ID Text
12 [Apple, Zebra]
14 [Camel, Apple]
18 [Obama, Trump]
20 [Lincoln, Obama, Trump]
15 [Apple, Banana, Zebra]
"Text" eine Liste von Strings ist. Ich bin auf der Suche nach einer Möglichkeit, die Links zwischen Zeilen basierend auf Text zu finden, wie ID 12 und 14 Apple gemeinsam haben.
Also, was ich würde im Idealfall haben möchte ist:
ID Text Link
12 [Apple] [14]
12 [Apple, Zebra] [15]
18 [Obama, Trump] [20]
Was ich bisher versucht: durch jedes Element jeder Liste iterieren und ein Wörterbuch wie so machen:
{ 'Apple' : [12, 14], 'Obama' : [18, 20], 'Trump' : [18, 20], 'Zebra' : [12, 15], 'Camel' : [14], 'Lincoln' : [20], 'Banana' : [15] }
jedoch Da die Daten ziemlich groß sind, benötigt dies viel Zeit. Ich bin auf der Suche nach einer geschwindigkeitsoptimierten Lösung. Irgendwelche Gedanken und/oder Hilfe werden geschätzt.
Meine aktuelle Lösung ist eigentlich ganz einfach, ich schiebe Elemente mit ihren IDs ("Link") als Tupel in das Wörterbuch und prüfe, ob sie schon da sind. In welchem Fall füge ich die ID zur Liste hinzu - "Link". Die Zeitkomplexität wäre O (n^2) in der Anzahl der Elemente. – Kirtiman
Ich verstehe Ihre Lösung nicht vollständig, meinst du, ich sollte jede "Text" -Liste als eine Kreuzung machen und nach Überschneidungen zwischen diesem und dem Rest suchen? Aber das scheint O (n^2) in der Anzahl der Reihen zu sein! – Kirtiman