python - 如何按顺序执行 groupby 然后在 python/pandas 中选择第一行
问题描述
我有一个数据框,我想按两列分组,然后按第三列排序,然后从每组中选择第一行。这是我正在使用的代码
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'
这里缺少什么?
解决方案
你可以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
推荐阅读
- google-cloud-platform - Cloud Scheduler 页面访问问题 - 共享项目
- javascript - 如何对其中包含随机生成的数字的卡片列表进行排序?
- swift - swift中的MacOS动画延迟
- ios - 是否可以将应用程序作为 iOS OPEN Beta 发布?
- python - 在模板内切片 paginator.page_range
- docker - 如何从 Dockerfile 中的入口点发出超时命令
- html - Flutter 在返回 404 错误的有效 url 上获取请求
- expo - 如何在 Expo 上使用全局变量调用 API_URL
- html - Outlook 到 Gmail 间距问题
- java - 无法在我的 Android 应用程序中重命名和删除我的 pdf 文件