0

I have a pandas dataframe:

df = pd.DataFrame(
    {
    "id": ["K0", "K0", "K0", "K1", "K1", "K2", "K2","K2"],
    "name": ["Peter", "Peter", "Max", "Jim", "Lucy", "Lucy", "Lucy", "Pam"]
    }
    ) 

enter image description here

I want to get the frequency of each name for each ID. First I tried to groupby ID. Next I tried to count the number of unique names and write the result in a new column. Did't realy work in my case. The final df should look like this:

enter image description here

PParker
  • 1,419
  • 2
  • 10
  • 25
  • 1
    Use `df['freq_name'] = df.groupby(['id','name'])['id'].transform('size')` workinf same like answer bellow – jezrael Mar 22 '21 at 13:46

1 Answers1

1

Try with transform

df['freq_name'] = df.groupby(['id','name'])['id'].transform('count')
df
Out[401]: 
   id   name  freq_name
0  K0  Peter          2
1  K0  Peter          2
2  K0    Max          1
3  K1    Jim          1
4  K1   Lucy          1
5  K2   Lucy          2
6  K2   Lucy          2
7  K2    Pam          1
BENY
  • 317,841
  • 20
  • 164
  • 234