Pandas: Überprüfen Sie, ob eine Zahl mehrmals hintereinander erscheint

8

Sagen wir, ich habe einen Datenrahmen wie unten. Was ich will, ist, dass, wenn eine Zahl zwischen den Spalten a, b, c am meisten erscheint, sie diese Zahl ausgeben soll, oder wenn alle drei Zahlen verschieden sind, dann nimm die Zahl von a. Zum Beispiel erscheint in der ersten Zeile 1 am häufigsten unter 1 und 5, dann ist die Ausgabe in d gleich 1. In der zweiten Zeile sind jedoch alle drei Zahlen 11, 2, 7 der Spalten a, b, c unterschiedlich, Ausgabe ist der Wert der Spalte a (11), so ist in d ausgegeben 11

%Vor%

Erwartete Ausgabe

%Vor%     
user1670773 23.01.2018, 00:55
quelle

4 Antworten

1

scipy berechnet den Modus, aber ich bin überrascht nicht zu finden das in einer Menge.

%Vor%     
jpp 23.01.2018 01:49
quelle
1

Sie können value_counts

verwenden %Vor%     
Wen 23.01.2018 02:15
quelle
1

Hier ist meine bincount Lösung

Daten
Beachten Sie, dass sich dies von OPs unterscheidet, um darauf hinzuweisen, dass es wie erwartet funktioniert.

%Vor%

Lösung

%Vor%

Details

Erhalte ein numpy Array mit genau den Werten, die wir wollen.

%Vor%

Verwende enumerate und Verständnis, um eine Liste von Tupeln zu erstellen. Jeder Zeilenwert unterscheidet sich von anderen Zeilen, weil ich für jede Zeile einen Bezeichner an der ersten Stelle des Tupels platziere. Nämlich der Wert von enumerate. Ich gebe diese dann in die Funktion factorize der Pandas weiter, um sie in Numpys bincount zu platzieren.

%Vor%

Jetzt verwende ich bincount auf f und schneide es mit f , um ein Array der gleichen Größe zu bekommen, das jetzt mit Zählwerten gefüllt ist.

%Vor%

Ich finde die maximalen Werte und schneide das ursprüngliche Array ab, um herauszufinden, wo diese Werte sind.

%Vor%

Beachten Sie, dass, wenn alle Werte gleich sind oder wenn es mehrere Modi gibt, argmax den ersten auswählen wird. Wenn alle gleich sind, ist dies die Spalte a .

%Vor%     
piRSquared 23.01.2018 02:17
quelle
0

Wie von @piRSquared vorgeschlagen, können wir mode function in Pandas verwenden.

%Vor%

Eine andere Methode (zum Spaß)

%Vor%

Pseudocode-Erklärung

%Vor%     
Tai 23.01.2018 02:55
quelle

Tags und Links