pandas group by and assign a group id then ungroup

前端 未结 3 553
我寻月下人不归
我寻月下人不归 2020-12-03 20:10

I have a large data set in the following format:

id, socialmedia
1, facebook
2, facebook
3, google
4, google
5, google
6, twitter
7, google
8, twitter
9, sn         


        
3条回答
  •  没有蜡笔的小新
    2020-12-03 20:57

    By using ngroup

    df['grpId']=df.groupby(' socialmedia').ngroup().add(1)
    df
    Out[354]: 
        id  socialmedia  grpId
    0    1     facebook      1
    1    2     facebook      1
    2    3       google      2
    3    4       google      2
    4    5       google      2
    5    6      twitter      4
    6    7       google      2
    7    8      twitter      4
    8    9     snapchat      3
    9   10      twitter      4
    10  11     facebook      1
    

    Or pd.factorize and 'categroy'

    df['grpId']=pd.factorize(df[' socialmedia'])[0]+1
    
    df
    Out[358]: 
        id  socialmedia  grpId
    0    1     facebook      1
    1    2     facebook      1
    2    3       google      2
    3    4       google      2
    4    5       google      2
    5    6      twitter      3
    6    7       google      2
    7    8      twitter      3
    8    9     snapchat      4
    9   10      twitter      3
    10  11     facebook      1
    

    df['grpId']=df[' socialmedia'].astype('category').cat.codes.add(1)
    df
    Out[356]: 
        id  socialmedia  grpId
    0    1     facebook      1
    1    2     facebook      1
    2    3       google      2
    3    4       google      2
    4    5       google      2
    5    6      twitter      4
    6    7       google      2
    7    8      twitter      4
    8    9     snapchat      3
    9   10      twitter      4
    10  11     facebook      1
    

提交回复
热议问题