[英]Pandas groupby - count unique into separate columns per group
我正在嘗試進行分組,其中一列中有字符串分類數據:
ID cat_1 cat_2
11 'OG' 'ASD'
11 'LOL' 'ASD'
11 'OG' 'DFG'
22 'LOL' 'DFG'
22 'OG' 'DFG'
我試圖按 ID 分組,並將字符串數據聚合成一個數字特征,即每個類別的出現次數。 所以結果將是:
ID OG LOL ASD DFG
11 2 1 2 1
22 1 1 0 2
我怎樣才能在 pandas 中實現這一點? 謝謝你!
你可以堆疊/value_counts/unstack:
(df.set_index('ID')
.stack()
.groupby('ID')
.value_counts()
.unstack(fill_value=0)
)
注意。 如果你想要所有列,你可以添加.reset_index()
output:
ASD DFG LOL OG
ID
11 2 1 1 2
22 0 2 1 1
您可以將pd.get_dummies
與groupby
和stack
一起使用:
>>> pd.get_dummies(df.set_index("ID").stack()).groupby("ID").sum()
ASD DFG LOL OG
ID
11 2 1 1 2
22 0 2 1 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.