![](/img/trans.png)
[英]Group by multiple columns and pivot and count values from other column in 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.