Heim >Backend-Entwicklung >Python-Tutorial >Wie findet man effizient den häufigsten Wert in einer Pandas DataFrame-Gruppe?
Angenommen, Sie haben einen Datenrahmen mit mehreren Zeichenfolgenspalten. Jede Kombination der ersten beiden Spalten sollte nur einen gültigen Wert in der dritten Spalte haben. Sie müssen die Daten konsistent bereinigen, indem Sie den Datenrahmen nach den ersten beiden Spalten gruppieren und für jede Kombination den häufigsten Wert der dritten Spalte auswählen.
Der folgende Code zeigt Ein Versuch, dies zu erreichen:
import pandas as pd<br>from scipy import stats</p> <p>source = pd.DataFrame({</p> <pre class="brush:php;toolbar:false">'Country': ['USA', 'USA', 'Russia', 'USA'], 'City': ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'], 'Short name': ['NY', 'New', 'Spb', 'NY']})
source.groupby(['Country','City']).agg(lambda x: stats.mode(x[' Kurzname'])[0])
Allerdings der letzte Codezeile schlägt mit einem KeyError fehl. Wie können Sie dieses Problem beheben? h4>
Für Pandas-Versionen 0.16 und höher verwenden Sie der folgende Code:
source.groupby(['Country','City'])['Short name'].agg(pd.Series.mode)
< /pre>Dieser Code verwendet die Funktion pd.Series.mode, die in Pandas 0.16 eingeführt wurde, um jeweils den häufigsten Wert zu finden Gruppe.
Alternativen für den Umgang mit mehreren Modi
Die Series.mode-Funktion behandelt Fälle mit mehreren Modi effektiv:
Während Sie Statistics.mode von Python aus verwenden könnten, kommt es nicht gut mit mehreren Modi zurecht und kann einen Fehler auslösen StatisticsError. Daher wird es nicht empfohlen.
Das obige ist der detaillierte Inhalt vonWie findet man effizient den häufigsten Wert in einer Pandas DataFrame-Gruppe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!