Ich habe meine Daten im Pandas-Datenrahmen wie folgt:
df1 = pd.DataFrame({'A':['yes','yes','yes','yes','no','no','yes','yes','yes','no'],
'B':['yes','no','no','no','yes','yes','no','yes','yes','no']})
Meine Daten sehen also so aus
----------------------------
index A B
0 yes yes
1 yes no
2 yes no
3 yes no
4 no yes
5 no yes
6 yes no
7 yes yes
8 yes yes
9 no no
-----------------------------
Ich möchte es in einen anderen Datenrahmen umwandeln. Die erwartete Ausgabe kann im folgenden Python-Skript angezeigt werden:
output = pd.DataFrame({'A':['no','no','yes','yes'],'B':['no','yes','no','yes'],'count':[1,2,4,3]})
Meine erwartete Ausgabe sieht also so aus
--------------------------------------------
index A B count
--------------------------------------------
0 no no 1
1 no yes 2
2 yes no 4
3 yes yes 3
--------------------------------------------
Tatsächlich kann ich mit dem folgenden Befehl alle Kombinationen finden und zählen: mytable = df1.groupby(['A','B']).size()
Es stellt sich jedoch heraus, dass sich solche Kombinationen in einer einzigen Spalte befinden. Ich möchte jeden Wert in einer Kombination in eine andere Spalte unterteilen und eine weitere Spalte für das Ergebnis der Zählung hinzufügen. Ist das möglich? Darf ich Ihre Vorschläge haben? Vielen Dank im Voraus.
set_index()
. Es wurde versucht,groupby()
Zeilen mit einem bestimmten gemeinsamen Spaltenpaar zu gruppieren. Erstaunlich, danke!@ EdChums sehr nette Antwort in eine Funktion einfügen
count_unique_index
. Die einzigartige Methode funktioniert nur bei Pandas-Serien, nicht bei Datenrahmen. Die folgende Funktion gibt das Verhalten der eindeutigen Funktion in R wieder:Und fügt eine Anzahl der vom OP angeforderten Vorkommen hinzu.
quelle
Ich habe damit keinen Zeittest gemacht, aber es hat Spaß gemacht, es zu versuchen. Konvertieren Sie grundsätzlich zwei Spalten in eine Spalte mit Tupeln. Konvertieren nun das zu einem Datenrahmen, tun ‚value_counts ()‘ , die die einzigartigen Elemente findet und zählt sie. Spielen Sie erneut mit dem Reißverschluss und ordnen Sie die Spalten in der gewünschten Reihenfolge an. Sie können die Schritte wahrscheinlich eleganter gestalten, aber die Arbeit mit Tupeln erscheint mir für dieses Problem natürlicher
quelle