我有一个数据框,我想按两列分组,然后按第三列排序,然后从每个组中选择第一行。这是我正在使用的代码
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'
这里缺少什么?
答案 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
作为汇总函数。