Ich versuche, das folgende Problem zu lösen. Es gibt einen Datenrahmen df
:So extrahieren Elternknoten und nachfolgende Knoten aus Datenframe
df =
ID GROUP_1 GROUP_2 GROUP_3 GROUP_4
1 AAA AAA BBB CCC
2 CCC AAA CCC BBB
3 DDD CCC BBB CCC
4 ...
Ich brauche alle Sequenzen von Gruppen zu extrahieren und sie zählen. Die Ausgabe sollte diese sein (in eckigen Klammern ich alle möglichen nachfolgenden Knoten für den gegebenen Elternknoten haben wollen):
result =
AAA, 3, [AAA,BBB,CCC]
BBB, 2, [CCC]
CCC, 3, [AAA,BBB]
DDD, 1, [CCC]
Ich weiß, wie die Anzahl der eindeutigen Vorkommen von Gruppen zu zählen wie folgt:
df.filter(regex="^GROUP").stack().reset_index(level=1, drop=True).reset_index().drop_duplicates()[0].value_counts()
Es gibt die Ausgabe wie diese:
AAA 2
BBB 3
CCC 3
DDD 1
aber ich weiß nicht, wie alle möglichen nachfolgenden Knoten ohne Duplikate zu extrahieren und alle Vorkommen dieser Paare zählen (einschließlich Duplikate).
ich verstehe es nicht, wie Sie bekam 'DDD, 1, [CCC]' Linie? Oder 'CCC, 3, [AAA, BBB]' Linie? –
@RomanPekar: Wie Sie in 'df' sehen können, hat der Wert' DDD' nur einen möglichen nachfolgenden Spaltenwert, der 'CCC' ist, und es gibt nur ein Vorkommen einer solchen Folge'' (es kommt in Zeile 3 vor) .Dasselbe gilt für 'CCC': Dieser Wert kann zwei mögliche eindeutige Werte der folgenden Spalten haben, die 'AAA' und' BBB' sind, und insgesamt gibt es 3 Vorkommen solcher Paare: '' (Zeile 2), '' (Zeile 2), '' (Zeile 3). Ist es jetzt klarer? Vielen Dank. –
Dinosaurius