#创建数据集
df = pd.DataFrame({'A':[12,20,12,5,18,11,18],
'C':['A','B','A','B','B','A','A'],
'B':['d','d','e','d','e','e','d']})
#实现row_number()
df['row_number'] = df.groupby(['C','B'])['A'].rank(ascending=True,method='first')
rank中的参数说明:
rank函数主要有两个参数,首先是ascending参数,决定是按照升序还是降序排列。第二个参数是填充方式,主要有以下几种方式:
- dense:稠密的方式,即当两个或多个的数值相同时,使用同样的序号,同时后面的序号是该序号+1,即多个相同的值只会占用一个序号位,例如四个数的排序,中间两个数相同,那么四个数的排序为1,2,2,3。
- first:即当两个或多个的数值相同时,使用不样的序号,按照数据出现的先后顺序进行排序,这个其实跟row_number的实现是相同的。
- max :当两个或多个的数值相同时,使用相同的序号,不过使用的是能达到的最大的序号值。例如四个数的排序,中间两个数相同,那么四个数的排序为1,3,3,4。
- min :当两个或多个的数值相同时,使用相同的序号,不过使用的是能达到的最小的序号值。例如四个数的排序,中间两个数相同,那么四个数的排序为1,2,2,4。