Pandas实现row_number() over(partit

2020-02-14  本文已影响0人  qikang5405

def row_number(df,groupby=[],orderby=[],asc=[],row_num_name='rNo'):

    '''

        利用padas实现row_number()的功能

        df——要处理的dataframe

        groupby:要分组的变量,必须是list

        orderby:要排序的变量,必须是list,结果会优先按照groupby+orderby排序

        asc:ordery中逐一对应的排序规则,必须是list,且必须与orderby等长

        row_num_name:列号存放的位置

    '''

    df[row_num_name] = 1

    df.sort_values(by=groupby+orderby,ascending=[True]*len(groupby)+asc, inplace=True)

    df[row_num_name]=df.groupby(groupby)[row_num_name].cumsum()

    return df

上一篇下一篇

猜你喜欢

热点阅读