Skip to content Skip to sidebar Skip to footer

Find Repeated Words In A Column And Sort It According To Number Of Occurence Using Pandas

A B 1) Italy Transport for London..... 2) Italy Roseanne Barr Actor leavin..... 3) America

Solution 1:

Use transform with argsort in descending order for positions and select by iloc:

df = df.iloc[(-df.groupby('A')['A'].transform('size')).argsort()]
print (df)
          A                              B
3)  America  Americas Transport for London
4)  America           Transport for London
5)  America     Roseanne Barr Actor leavin
1)    Italy           Transport for London
2)    Italy     Roseanne Barr Actor leavin
6)   France  Americas Transport for London

Or create new column and sort:

df['new'] = df.groupby('A')['A'].transform('size')

df = df.sort_values('new', ascending=False)
print (df)
          A                              B  new
3)  America  Americas Transport for London    3
4)  America           Transport for London    3
5)  America     Roseanne Barr Actor leavin    3
1)    Italy           Transport for London    2
2)    Italy     Roseanne Barr Actor leavin    2
6)   France  Americas Transport for London    1

Solution 2:

Using collections.Counter to create a dictionary of counts:

from collections import Counter

df = pd.DataFrame([['Italy', 'Transport for London'],
                   ['Italy', 'Roseanne Barr Actor leavin'],
                   ['America', 'Americas Transport for London'],
                   ['America', 'Transport for London'],
                   ['America', 'Roseanne Barr Actor leavin'],
                   ['France', 'Americas Transport for London']],
                  columns=['A', 'B'])

# calculate counts
c = Counter(df['A'])

# apply reordering
df = df.iloc[df['A'].map(c).argsort()[::-1]]

# save to excel
df.to_excel('file.xlsx', index=False)

Result:

print(df)

         A                              B
4  America     Roseanne Barr Actor leavin
3  America           Transport for London
2  America  Americas Transport for London
1    Italy     Roseanne Barr Actor leavin
0    Italy           Transport for London
5   France  Americas Transport for London

Post a Comment for "Find Repeated Words In A Column And Sort It According To Number Of Occurence Using Pandas"