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% Hier ist meine bincount
Lösung
Daten
Beachten Sie, dass sich dies von OPs unterscheidet, um darauf hinzuweisen, dass es wie erwartet funktioniert.
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.
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.
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
.