Stellen Sie sich eine Situation vor, in der Sie einen DataFrame mit mehreren Spalten haben und die Zeilen nach zwei Spalten gruppieren möchten. Nach der Gruppierung müssen Sie möglicherweise die aggregierten Ergebnisse innerhalb jeder Gruppe weiter sortieren, z. B. nach einer Zählungsspalte in absteigender Reihenfolge sortieren. So können Sie das erreichen:
Um Daten nach mehreren Spalten zu gruppieren und dann innerhalb der Gruppen zu sortieren, können Sie die Funktionen groupby() und sort_values() kombinieren. Angenommen, Sie haben einen DataFrame mit Spaltenanzahl, Job und Quelle.
<code class="python">import pandas as pd df = pd.DataFrame({'count': [2, 4, 6, 3, 7, 5, 3, 2, 4, 1], 'job': ['sales','sales','sales','sales','sales', 'market','market','market','market','market'], 'source': ['A','B','C','D','E','A','B','C','D','E']})</code>
Um die Gesamtzahl für jede Kombination aus Job und Quelle zu erhalten, können Sie Folgendes tun:
<code class="python">df.groupby(['job','source']).agg({'count':sum})</code>
Als nächstes können Sie Folgendes tun, um die Zählspalte in absteigender Reihenfolge innerhalb jeder der Gruppen zu sortieren und nur die obersten drei Zeilen zu übernehmen:
<code class="python">result = df.sort_values(['job','count'],ascending=False).groupby('job').head(3)</code>
Dadurch wird ein DataFrame mit den obersten drei Zeilen zurückgegeben jede Jobgruppe, sortiert nach der Zählspalte in absteigender Reihenfolge. Der resultierende DataFrame könnte so aussehen:
<code class="python">print(result) count job source 4 7 sales E 2 6 sales C 1 4 sales B 5 5 market A 8 4 market D 6 3 market B</code>
Das obige ist der detaillierte Inhalt vonWie gruppiere ich Daten und sortiere innerhalb von Gruppen mit Pandas GroupBy?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!