1

I have a dataframe like this

package_num   delivery_date
122           12/21
122           12/21
134           12/30
156           12/30
156           12/30

I want to be able to do use something like MySQL row_number() but on python. I want a column of row number that starts with 1 and goes up increments of 1 until package number changes. So my desired outcome is:

package_num   delivery_date    row_number
122           12/21            1
122           12/21            2
134           12/30            1
156           12/30            1
156           12/30            2
meW
  • 3,832
  • 7
  • 27
Monica
  • 11
  • 3

2 Answers2

2

A bit extended version using list comprehension:

val = df.groupby('package_num').count().values.ravel()
df['row_numer'] = [j  for i in val for j in range(1, i+1)]
meW
  • 3,832
  • 7
  • 27
1

You can use cumcount() , like this

df['row_number']= df.groupby('package_num').cumcount()+1


package_num   delivery_date    row_number
122           12/21            1
122           12/21            2
134           12/30            1
156           12/30            1
156           12/30            2
meW
  • 3,832
  • 7
  • 27
Courage
  • 772
  • 8
  • 20