pandas dataframe上实现row_number()

1. 先按照某列进行排序,按照这列的出现顺序,对相同的row进行rank,比如相同uid按照time编号
df = df.sort_values(['uid','time'])

2. 编号过后用groupby和cumcount()
df['rank'] = df.groupby(['uid']).cumcount()+1,因为cumcount()生成的是从0开始,所有需要+1,原来这个加1,可以这样潇洒地直+1啊

注意:df.groupby(['uid']).count(),这个是对uid之外的每一个列都要去计算count(),index就是被groupby的列。而cumcount()这个就是生成一个series,index就是之前的index



留言

熱門文章