Pandas Dataframe: how to add column with number of occurrences in other column

前端 未结 3 1696
梦毁少年i
梦毁少年i 2020-12-17 00:17

I have to following df:

Col1    Col2
test    Something
test2   Something
test3   Something
test    Something
test2   Something
test5   Something
相关标签:
3条回答
  • 2020-12-17 00:38

    I can't get the other answers to work when I want to retain more columns than just the two columns Col1 and Col2. Below works well for me with any number of other columns retained.

    df['Occur'] = df['Col1'].apply(lambda x: (df['Col1'] == x).sum())
    
    0 讨论(0)
  • 2020-12-17 00:48

    groupby on 'col1' and then apply transform on Col2 to return a Series with its index aligned to the original df so you can add it as a column:

    In [3]:
    df['Occur'] = df.groupby('Col1')['Col2'].transform(pd.Series.value_counts)
    df
    
    Out[3]:
        Col1       Col2 Occur
    0   test  Something     2
    1  test2  Something     2
    2  test3  Something     1
    3   test  Something     2
    4  test2  Something     2
    5  test5  Something     1
    
    0 讨论(0)
  • 2020-12-17 00:50

    You can also use GroupBy + transform with size:

    df['Occur'] = df.groupby('Col1')['Col1'].transform('size')
    
    print(df)
    
        Col1       Col2  Occur
    0   test  Something      2
    1  test2  Something      2
    2  test3  Something      1
    3   test  Something      2
    4  test2  Something      2
    5  test5  Something      1
    
    0 讨论(0)
提交回复
热议问题