Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sortiere ich Daten innerhalb von Gruppen in Pandas DataFrames?

Wie sortiere ich Daten innerhalb von Gruppen in Pandas DataFrames?

Susan Sarandon
Susan SarandonOriginal
2024-10-20 17:27:02250Durchsuche

How to Sort Data Within Groups in Pandas DataFrames?

Sortieren innerhalb von Gruppen in Pandas

Bei der Arbeit mit Pandas-Datenrahmen ist es häufig erforderlich, Daten nach bestimmten Spalten zu gruppieren und dann zusätzliche Vorgänge auszuführen innerhalb dieser Gruppen. Eine häufige Anforderung besteht darin, die gruppierten Daten nach einem bestimmten Kriterium zu sortieren.

Um dies zu erreichen, kann die Funktion „groupby“ mit der Funktion „sort_values“ verkettet werden. Betrachten Sie als Beispiel einen Datenrahmen df mit den Spalten „Anzahl“, „Job“ und „Quelle“.

In [167]: df

Out[167]:
   count     job source
0      2   sales      A
1      4   sales      B
2      6   sales      C
3      3   sales      D
4      7   sales      E
5      5  market      A
6      3  market      B
7      2  market      C
8      4  market      D
9      1  market      E

Wenn Sie die Daten nach Job und Quelle gruppieren und dann die aggregierten Ergebnisse nach Anzahl in absteigender Reihenfolge sortieren möchten, Sie können Folgendes tun:

In [168]: df.groupby(['job','source']).agg({'count':sum})

Dadurch wird ein neuer Datenrahmen erstellt, der die aggregierten Zählwerte für jede Gruppe enthält. Der resultierende Datenrahmen wird jedoch nicht nach Anzahl sortiert. Um den Datenrahmen zu sortieren, können Sie die Funktion sort_values ​​verwenden:

In [34]: df.sort_values(['job','count'],ascending=False)

Dadurch wird der Datenrahmen zuerst nach Job und dann nach Anzahl in absteigender Reihenfolge sortiert. Der resultierende Datenrahmen sieht folgendermaßen aus:

Out[35]: 
   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

Um die oberen drei Zeilen jeder Gruppe zu übernehmen, können Sie die Head-Funktion verwenden:

In [34]: df.sort_values(['job','count'],ascending=False).groupby('job').head(3)

Dies führt zu einem neuen Datenrahmen Das enthält die obersten drei Zeilen jeder Gruppe, sortiert nach Anzahl in absteigender Reihenfolge.

Out[35]: 
   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

Das obige ist der detaillierte Inhalt vonWie sortiere ich Daten innerhalb von Gruppen in 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