在pandas 中分組排序
使用pandas 資料框時,通常需要按特定列將資料分組,然後執行其他操作在這些群體中。一個常見的要求是根據特定標準對分組資料進行排序。
要實現此目的,可以將 groupby 函數與 sort_values 函數連結。例如,考慮一個包含 count、job 和 source 欄位的資料框 df。
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
如果您想要按job 和source 對資料進行分組,然後按count 降序對聚合結果進行排序,您可以執行以下操作:
In [168]: df.groupby(['job','source']).agg({'count':sum})
這將建立一個新的資料框,其中包含每個組的聚合計數值。但是,產生的資料幀不會按計數排序。若要對資料幀進行排序,您可以使用 sort_values 函數:
In [34]: df.sort_values(['job','count'],ascending=False)
這將首先按作業對資料幀進行排序,然後按計數降序排列。產生的資料框將如下所示:
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
要取得每組的前三行,您可以使用head 函數:
In [34]: df.sort_values(['job','count'],ascending=False).groupby('job').head(3)
這將產生一個新的資料框包含每組的前三行,依計數降序排列。
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
以上是如何在 Pandas DataFrame 中對組內的資料進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!