我有一个像这样的数据框
package_num delivery_date
122 12/21
122 12/21
134 12/30
156 12/30
156 12/30
我希望能够在python上使用类似MySQL row_number()之类的东西。我想要一列以1开头并以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
答案 0 :(得分:2)
使用列表理解功能的扩展版本:
val = df.groupby('package_num').count().values.ravel()
df['row_numer'] = [j for i in val for j in range(1, i+1)]
答案 1 :(得分:1)
您可以像这样使用cumcount()
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