Heim >Backend-Entwicklung >Python-Tutorial >Wie finde ich den häufigsten Wert in jeder Gruppe eines Pandas-DataFrames?

Wie finde ich den häufigsten Wert in jeder Gruppe eines Pandas-DataFrames?

Linda Hamilton
Linda HamiltonOriginal
2024-12-01 08:22:10165Durchsuche

How to Find the Most Frequent Value in Each Group of a Pandas DataFrame?

Wählen Sie den häufigsten Wert für jede Gruppe in einem DataFrame aus

Um Daten zu bereinigen, die mehrere Zeichenfolgenspalten enthalten, ist es notwendig, die Zeilen nach bestimmten Spalten zu gruppieren und die häufigsten auszuwählen gemeinsamer Wert für eine bestimmte Spalte innerhalb jeder Gruppe. In diesem Artikel wird gezeigt, wie Sie diese Aufgabe mithilfe der leistungsstarken Pandas-Bibliothek ausführen können.

Codekorrektur für bestimmte Fehlermeldungen

Der in der ersten Abfrage bereitgestellte Code enthält einige Fehler, die unten korrigiert wurden:

import pandas as pd

source = pd.DataFrame({
    'Country': ['USA', 'USA', 'Russia', 'USA'], 
    'City': ['New York', 'New York', 'Saint Petersburg', 'New York'],
    'Short Name': ['NY', 'New', 'Spb', 'NY']})

# Group by 'Country' and 'City' and calculate the most frequent 'Short Name' in each group
result = source.groupby(['Country', 'City'])['Short Name'].apply(lambda x: pd.Series.mode(x)[0][0])

Erklärung

  1. Verwenden Sie die neueste Version Series.mode: Der ursprüngliche Code versucht, Statistics.mode auf jede Gruppe anzuwenden, was mehrere Modi nicht gut verarbeiten kann und einen Fehler auslösen kann. Stattdessen wird die neuere Funktion pd.Series.mode verwendet, die explizit eine Reihe aller Modi zurückgibt und so das Problem löst.
  2. Mehrere Modi verarbeiten: Um sicherzustellen, dass nur ein einziger Wenn der häufigste Wert ausgewählt wird, extrahiert der Code das erste Element aus der von Series.mode zurückgegebenen Serie. Dies wird durch die Verwendung der 0-Syntax erreicht.

Zusätzliche Optionen

Wenn ein DataFrame als Ergebnis bevorzugt wird:

result = source.groupby(['Country', 'City'])['Short Name'].agg(pd.Series.mode).to_frame()

Wenn Sie jeweils separate Zeilen wünschen Modus:

result = source.groupby(['Country', 'City'])['Short Name'].apply(pd.Series.mode)

Hinweis: Wenn Sie bereit sind, einen beliebigen Moduswert als Auswahl zu akzeptieren, können Sie eine Lambda-Funktion verwenden, die den ersten Modus aus der Serie extrahiert :

result = source.groupby(['Country', 'City'])['Short Name'].agg(lambda x: pd.Series.mode(x)[0])

Das obige ist der detaillierte Inhalt vonWie finde ich den häufigsten Wert in jeder Gruppe eines Pandas-DataFrames?. 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