簡體   English   中英

Pandas groupby - 將唯一值計入每組單獨的列

[英]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_dummiesgroupbystack一起使用:

>>> 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.

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