Heim > Datenbank > MySQL-Tutorial > Wie erreicht man die GROUP BY HAVING-Funktionalität von SQL mit der bedingten Filterung von Pandas?

Wie erreicht man die GROUP BY HAVING-Funktionalität von SQL mit der bedingten Filterung von Pandas?

Patricia Arquette
Freigeben: 2025-01-10 17:35:41
Original
508 Leute haben es durchsucht

How to Achieve SQL's GROUP BY HAVING Functionality with Pandas Conditional Filtering?

Pandas-Datengruppenfilterung: entspricht SQLs GROUP BY HAVING

Bei der Datenanalyse ist es oft notwendig, Daten basierend auf Bedingungen zu filtern, die auf die Datengruppe angewendet werden. In SQL ermöglicht die HAVING-Klausel diese Art der bedingten Filterung. In Pandas kann eine ähnliche Funktionalität durch eine Kombination aus Groupby- und Filteroperationen erreicht werden.

Um einen Filter auf gruppierte Daten in Pandas anzuwenden, können Sie die im Groupby-Objekt bereitgestellte Filtermethode verwenden. Diese Methode akzeptiert eine Funktion als Eingabe und wendet sie auf jede Gruppe an. Wenn die Funktion für eine Gruppe „True“ zurückgibt, bleibt die Gruppe erhalten; andernfalls wird sie ausgeschlossen.

Betrachten Sie das folgende Beispiel:

<code class="language-python">import pandas as pd

df = pd.DataFrame([[1, 2], [1, 3], [5, 6]], columns=['A', 'B'])

# 按列 A 分组数据框
g = df.groupby('A')

# 过滤以包含超过 1 行的组
filtered_df = g.filter(lambda x: len(x) > 1)

print(filtered_df)</code>
Nach dem Login kopieren

Ausgabe:

<code>   A  B
0  1  2
1  1  3</code>
Nach dem Login kopieren

In diesem Beispiel erstellt die Groupby-Operation ein Gruppenobjekt für jeden eindeutigen Wert in Spalte A. Die Filtermethode wird dann auf jedes Gruppenobjekt angewendet und die Funktion len(x) wird verwendet, um zu bestimmen, ob die Gruppe beibehalten oder ausgeschlossen werden soll. In diesem Beispiel werden Gruppen mit mehr als einer Zeile beibehalten, was zu einem gefilterten Datenrahmen führt.

Sie können auch komplexere Filterfunktionen erstellen, sofern diese einen booleschen Wert zurückgeben. Um beispielsweise eine Gruppe basierend auf der Summe der Werte in Spalte B zu filtern, würden Sie Folgendes verwenden:

<code class="language-python">filtered_df = g.filter(lambda x: x['B'].sum() == 5)</code>
Nach dem Login kopieren

Beachten Sie, dass möglicherweise ein Fehler vorliegt, bei dem Sie nicht auf die zum Gruppieren verwendeten Spalten in der Filterfunktion zugreifen können. Eine Problemumgehung besteht darin, den Datenrahmen manuell mithilfe von Spaltennamen zu gruppieren.

Das obige ist der detaillierte Inhalt vonWie erreicht man die GROUP BY HAVING-Funktionalität von SQL mit der bedingten Filterung von Pandas?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage