pythonpandasdataframe

changing sort in value_counts


If I do

mt = mobile.PattLen.value_counts()   # sort True by default

I get

4    2831
3    2555 
5    1561
[...]

If I do

mt = mobile.PattLen.value_counts(sort=False) 

I get

8    225
9    120
2   1234 
[...]

What I am trying to do is get the output in 2, 3, 4 ascending order (the left numeric column). Can I change value_counts somehow or do I need to use a different function.


Solution

  • I think you need sort_index, because the left column is called index. The full command would be mt = mobile.PattLen.value_counts().sort_index(). For example:

    mobile = pd.DataFrame({'PattLen':[1,1,2,6,6,7,7,7,7,8]})
    print (mobile)
       PattLen
    0        1
    1        1
    2        2
    3        6
    4        6
    5        7
    6        7
    7        7
    8        7
    9        8
    
    print (mobile.PattLen.value_counts())
    7    4
    6    2
    1    2
    8    1
    2    1
    Name: PattLen, dtype: int64
    
    
    mt = mobile.PattLen.value_counts().sort_index()
    print (mt)
    1    2
    2    1
    6    2
    7    4
    8    1
    Name: PattLen, dtype: int64