Ausgabe
Meine Aufgabe ist es, Elemente zu sammeln, die etwas gemeinsam haben.
Beispiel:
pd.DataFrame({'C1': ['A', 'B', 'C', 'D', 'R', 'X'], 'C2': ['B', 'C', 'D', 'E', 'S', 'Y']})
C1 C2
0 A B
1 B C
2 C D
3 D E
4 R S
5 X Y
und das suche ich:
Groups
0 [A, B, C, D, E]
1 [R, S]
2 [X, Y]
Irgendeine Idee ?
Lösung
Sie sollten networkx.connected_components
hier verwenden.
Die Annäherung an Ihre Daten als Diagramm ist eine zuverlässige Methode, um sicherzustellen, dass alle Werte zusammen gruppiert werden.
import networkx as nx
G = nx.from_pandas_edgelist(df, source='C1', target='C2')
out = pd.DataFrame({'Groups': map(sorted, nx.connected_components(G))})
Ausgang:
Groups
0 [A, B, C, D, E]
1 [R, S]
2 [X, Y]
Ihre Grafik:
Beantwortet von – mozway
Antwort geprüft von – Katrina (FixError Volunteer)