簡體   English   中英

Pandas groupby agg 根據一列的值

[英]Pandas groupby agg according to one column's values

數據源:


    Name    Country Height
0   Ben     UK  170
1   Bob     UK  159
2   Alice   UK  182
3   Craig   UK  172
4   Steve   UK  166
5   Jobs    UK  166
6   Jams    ZA  153
7   Tommy   ZA  176
8   Jacab   ZA  190

目標:

在此處輸入圖像描述

試過:

h_range_labels=["150-159", "160-169", "170-179", "180-190"]
h_range=[150,160,170,180,190]
source.groupby(pd.cut(source["Height"], h_range, labels=h_range_labels)).agg({"Name":"count"}).cumsum()

我如何實現上圖的目標?

------更新問題----------

目標 2:如何顯示為行百分比的總和?

Country      UK      ZA
Height            
[150, 160)   16.67%   33.33%
[160, 170)   33.33%   0
[170, 180)   33.33%   33.33%
[180, 191)   16.67%   33.33%

嘗試這個:

df = df.groupby([pd.cut(df['Height'],bins = [150,160,170,180,191],right = False),'Country']).size().unstack()

輸出:

Country     UK  ZA
Height            
[150, 160)   1   1
[160, 170)   2   0
[170, 180)   2   1
[180, 191)   1   1

一定要獲得額外的輸出,可以使用以下內容:

df.div(df.sum(),axis=1).mul(100).applymap('{:.2f}%'.format)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM