簡體   English   中英

根據組(熊貓數據框)計算多列中的唯一值

[英]Count unique values in multiple columns according by group (pandas dataframe)

我在熊貓中有一個數據框:

    a  b  c  d  e
0   1  x  y  t  u
1   1  x  z  y  v
2   1  y  x  t  z
3   2  x  t  z  u
4   2  z  x  y  t 
5   3  x  z  y  t

我需要將此數據框轉換為此:

   a  x  y  z  t  u  v  y  z
0  1  3  3  2  2  1  1  3  2
1  2  2  1  2  2  1  0  1  2
2  3  1  1  1  1  0  0  0  0

IIUC

df.set_index('a').stack().groupby(level=0).value_counts().unstack(fill_value=0)
Out[514]: 
   t  u  v  x  y  z
a                  
1  2  1  1  3  3  2
2  2  1  0  2  1  2
3  1  0  0  1  1  1

或使用melt + crosstab

s=df.melt('a')
pd.crosstab(s.a,s.value)
Out[518]: 
value  t  u  v  x  y  z
a                      
1      2  1  1  3  3  2
2      2  1  0  2  1  2
3      1  0  0  1  1  1
df.melt(id_vars="a").groupby(["a","value"]).count().unstack().fillna(0)

      variable                         
value        t    u    v    x    y    z
a                                      
1          2.0  1.0  1.0  3.0  3.0  2.0
2          2.0  1.0  0.0  2.0  1.0  2.0
3          1.0  0.0  0.0  1.0  1.0  1.0

暫無
暫無

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

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