Pandas Groupby 與群組內排序
依多列對 DataFrame 進行分組是資料操作中常見的任務。它允許我們按這些列聚合資料並對聚合結果執行進一步的操作。然而,通常需要對每個組內的聚合結果進行排序以獲得頂行或底行。
考慮問題中提供的DataFrame df:
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
目標是按作業和來源列對df 進行分組,然後在每個組中按降序對「計數」列進行排序。為此,我們可以使用groupby() 和sort_values() 函數,如下所示:
<code class="python">df.groupby(['job', 'source'])['count'].sum().sort_values(ascending=False)</code>
這將按降序對每個群組中的「count」列進行排序,並提供以下輸出:
job source sales E 7 C 6 B 4 D 3 A 2 market A 5 D 4 B 3 C 2 E 1
但是,如果我們只想取得每組中的前三行,我們可以使用head() 函數:
<code class="python">df.groupby(['job', 'source'])['count'].sum().sort_values(ascending=False).groupby('job').head(3)</code>
這將給我們以下結果:
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
透過組合groupby()、sort_values() 和head() 函數,我們可以有效地對pandas 中每個群組中的頂部或底部行進行分組、排序和選擇。
以上是如何對 DataFrame 中特定列內的資料進行分組和排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!