在另一列值更改时创建具有行号的列

2024-04-20 01:05:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的数据帧

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

我希望能够在python上使用类似MySQL row\u 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

Tags: 数据numberpackagedatemysqlnumrowdelivery
2条回答

你可以像这样使用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

使用列表理解的稍微扩展的版本:

val = df.groupby('package_num').count().values.ravel()
df['row_numer'] = [j  for i in val for j in range(1, i+1)]

相关问题 更多 >