Heim >Backend-Entwicklung >Python-Tutorial >Wie finde ich mit Pandas GroupBy Zeilen mit dem Mindestwert in einer Spalte?

Wie finde ich mit Pandas GroupBy Zeilen mit dem Mindestwert in einer Spalte?

Susan Sarandon
Susan SarandonOriginal
2024-10-29 00:16:291049Durchsuche

How to Find Rows with the Minimum Value in a Column Using Pandas GroupBy?

Auswählen von Zeilen mit minimalem Wert in einer Spalte mithilfe von Pandas GroupBy

Problemszenario

Bei einem Pandas-DataFrame mit mehreren Spalten besteht die Aufgabe darin, zu identifizieren und wählen Sie Zeilen mit dem Mindestwert in einer bestimmten Spalte für jeden eindeutigen Wert in einer anderen Spalte aus. In einem DataFrame mit den Spalten A, B und C möchten Sie beispielsweise Zeilen mit dem minimalen B-Wert für jeden A-Wert abrufen.

Lösung mit GroupBy und idxmin

Eine einfache und Ein effizienter Ansatz zur Lösung dieses Problems besteht darin, die Groupby- und Idxmin-Funktionen von Pandas zu nutzen. Die Funktion „groupby“ gruppiert Zeilen nach einer bestimmten Spalte, während idxmin den Index der Zeile mit dem Mindestwert in einer anderen Spalte zurückgibt.

<code class="python">df.loc[df.groupby('A').B.idxmin()]</code>

Diese Codezeile erzielt das gewünschte Ergebnis. Zuerst wird groupby('A') verwendet, um den DataFrame nach Spalte A zu gruppieren. Anschließend wird die Funktion B.idxmin() auf jede Gruppe angewendet, die den Index der Zeile mit dem minimalen B-Wert innerhalb dieser Gruppe zurückgibt. Schließlich wird die Loc-Funktion verwendet, um die Zeilen auszuwählen, die den minimalen B-Werten entsprechen.

Demonstration

Betrachten Sie den folgenden DataFrame:

<code class="python">df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 2],
                   'B': [4, 5, 2, 7, 4, 6],
                   'C': [3, 4, 10, 2, 4, 6]})</code>

Das Anwenden des Lösungscodes führt zu Ergebnissen das folgende Ergebnis:

   A  B   C
2  1  2  10
4  2  4   4

Diese Ausgabe zeigt die Zeilen, die den minimalen B-Wert für jeden eindeutigen A-Wert enthalten (2 für A=1 und 4 für A=2).

Zusätzliche Überlegungen

Alternativ können Sie reset_index(drop=True) verwenden, um die Indexspalte aus dem resultierenden DataFrame zu entfernen:

<code class="python">df.loc[df.groupby('A').B.idxmin()].reset_index(drop=True)</code>

Dadurch erhalten Sie einen DataFrame mit nur den Spalten, die Sie benötigen .

Das obige ist der detaillierte Inhalt vonWie finde ich mit Pandas GroupBy Zeilen mit dem Mindestwert in einer Spalte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn