当另一个列值更改python时,创建具有行号的列

时间:2019-01-03 05:33:38

标签: python pandas dataframe

我有一个像这样的数据框

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

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