如何进行分组排序,然后按顺序排序,然后在python / pandas中选择第一行

时间:2018-07-19 13:28:43

标签: python pandas pandas-groupby

我有一个数据框,我想按两列分组,然后按第三列排序,然后从每个组中选择第一行。这是我正在使用的代码

first= df.groupby(['EMPLID','EMPL_RCD']).apply(lambda x: x.sort_values(by = ['EFFDT','EFFSEQ'], ascending = True)).first()

但是运行它时出现以下错误

first() missing 1 required positional argument: 'offset'

这里缺少什么?

1 个答案:

答案 0 :(得分:0)

您可以先sort_values,然后再drop_duplicates

res = df.sort_values(['EFFDT','EFFSEQ'])\
        .drop_duplicates(subset=['EMPLID','EMPL_RCD'])

或者,您可以排序,然后使用groupby + first

res = df.sort_values(['EFFDT','EFFSEQ'])\
        .groupby(['EMPLID','EMPL_RCD']).first()

您的代码不起作用,因为您将first应用于数据框而不是GroupBy对象。您需要将first传递给groupby作为汇总函数。