簡體   English   中英

其他列值的分組方式和計數 pandas

[英]Group by and count of other column values pandas

我有一個 pandas dataframe

age   gender   criticality    acknowledged       
 10    Male       High            Yes
 10    Male       High            Yes
 10    Male       High            Yes
 10    Male       Low             Yes
 11    Female     Medium          No

我想按年齡和性別分組,然后將“關鍵性”、“已確認”的值作為新列並獲取計數。

例如 output 我希望是:

                 criticality          acknowledged
age  gender    High   Medium   Low     Yes    No
 10    Male    3       0       1        4     0
 11    Female  0       1       0        0     1 

我想過使用df.groupby(['age','gender'])['criticality','acknowledged'].stack()

但它不起作用。

有沒有更好的方法來獲得這種格式的結果

由於您分別計算兩列,因此 concat 將是一個簡單的解決方案:

In [13]: pd.concat([df.pivot_table(index=['age', 'gender'], columns=col, aggfunc
    ...: =len) for col in ['criticality', 'acknowledged']], axis=1).fillna(0)
Out[13]: 
            acknowledged             criticality     
criticality         High  Low Medium          No  Yes
age gender                                           
10  Male             3.0  1.0    0.0         0.0  4.0
11  Female           0.0  0.0    1.0         1.0  0.0

assigning后使用get_dummies()groupby()的另一種方法,最后使用expand=True拆分列以用於 Multiindex:

l=['criticality','acknowledged']
final=df[['age','gender']].assign(**pd.get_dummies(df[l])).groupby(['age','gender']).sum()
final.columns=final.columns.str.split('_',expand=True)
print(final)

                     criticality       acknowledged    
                   High Low Medium           No Yes
age gender                                        
10  Male             3   1      0            0   4
11  Female           0   0      1            1   0

暫無
暫無

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

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