Farooq Sk
Farooq Sk

Reputation: 124

How to create a new column with .size() values of other column in pandas?

 df2 = df_cleaned.groupby('company').size()
 df2.columns = ['company', 'frequency']
 #df2.sort_values('frequency') # error : No axis named frequency for object type <class 'type'>
 df2

I have a dataframe "df_cleaned" with a 'company' column and im trying to create a new dataframe "df2" with a extra 'frequency' column to check how many times each company has been mentioned. I am unable to create a new frequency column. Seems like i'm doing something wrong, please help me out.

Screenshot showing no frequency column

Upvotes: 1

Views: 789

Answers (2)

Alex
Alex

Reputation: 1126

You don't provide the data for us, so generate it:

import numpy as np
source = ['3Com', '3M', 'A-T-O', 'A.H. Robins']
cmp = [source[i] for i in np.random.randint(4, size = 20)]
df = pd.DataFrame(cmp, columns = ['company'])

Out[1]:
    company
0   A.H. Robins
1   3M
2   A.H. Robins
3   A.H. Robins
4   3M
5   3M
6   3Com
7   A-T-O
8   3Com
9   A-T-O
10  3M
11  3M
12  A-T-O
13  3M
14  3M
15  A.H. Robins
16  A-T-O
17  A-T-O
18  A-T-O
19  3Com

df.groupby('company')[['company']].count().rename(columns = {'company':'frequency'})

Out[2]:

        frequency
company 
3Com        3
3M          7
A-T-O       6
A.H. Robins 4

Upvotes: 1

ansev
ansev

Reputation: 30930

Use:

df2 = df_cleaned.groupby('company').size().to_frame('frecuency')

Upvotes: 0

Related Questions