Pandas: Incrementally count occurrences in a column
dataframe, pandas, python
Solution
You can use `cumcount` to avoid a dummy column:
>>> df["Occ_Number"] = df.groupby("Name").cumcount()+1
>>> df
Name Occ_Number
0 abc 1
1 def 1
2 ghi 1
3 abc 2
4 abc 3
5 def 2
6 jkl 1
7 jkl 2
Problem
I have a DataFrame (df) which contains a 'Name' column. In a column labeled 'Occ_Number' I would like to keep a running tally on the number of appearances of each value in 'Name'. For example: ``` Name Occ_Number abc 1 def 1 ghi 1 abc 2 abc 3 def 2 jkl 1 jkl 2 ``` I've been trying to come up with a method using ``` >df['Name'].value_counts() ``` but can't quite figure out how to tie it all together. I can only get the grand total from value_counts(). My process thus far involves creating a list of the 'Name' column string values which contain counts greater than 1 with the following code: ``` >things = df['Name'].value_counts() >things = things[things > 1] >queries = things.index.values ``` I was hoping to then somehow cycle through 'Name' and conditionally add to Occ_Number by checking against queries, but this is where I'm getting stuck. Does anybody know of a way to do this? I would appreciate any help. Thank you!