count the frequency that a value occurs in a dataframe column

后端 未结 13 2097
耶瑟儿~
耶瑟儿~ 2020-11-22 03:29

I have a dataset

|category|
cat a
cat b
cat a

I\'d like to be able to return something like (showing unique values and frequency)



        
13条回答
  •  星月不相逢
    2020-11-22 04:18

    Use groupby and count:

    In [37]:
    df = pd.DataFrame({'a':list('abssbab')})
    df.groupby('a').count()
    
    Out[37]:
    
       a
    a   
    a  2
    b  3
    s  2
    
    [3 rows x 1 columns]
    

    See the online docs: https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html

    Also value_counts() as @DSM has commented, many ways to skin a cat here

    In [38]:
    df['a'].value_counts()
    
    Out[38]:
    
    b    3
    a    2
    s    2
    dtype: int64
    

    If you wanted to add frequency back to the original dataframe use transform to return an aligned index:

    In [41]:
    df['freq'] = df.groupby('a')['a'].transform('count')
    df
    
    Out[41]:
    
       a freq
    0  a    2
    1  b    3
    2  s    2
    3  s    2
    4  b    3
    5  a    2
    6  b    3
    
    [7 rows x 2 columns]
    

提交回复
热议问题