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
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
留言
張貼留言