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.
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])
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!