pythonpandasdataframeduplicatesrunning-count

Count duplicate rows and fill in column


I have created a DataFrame, and now need to count each duplicate row (by for example df['Gender']. Suppose Gender 'Male' occurs twice and Female three times, I need this column to be made:

Gender   Occurrence
Male     1
Male     2
Female   1
Female   2
Female   3

Is there a way to do this with Pandas?


Solution

  • Use the cumcount method after grouping by Gender:

    df = pd.DataFrame({'Gender':['Male','Male','Female','Female','Female']})   
    df['Occurrence'] = df.groupby('Gender').cumcount() + 1
    print(df)
    
       Gender  Occurrence
    0    Male           1
    1    Male           2
    2  Female           1
    3  Female           2
    4  Female           3
    

    Counts start with 0 so I added a + 1 there.