我正在处理应聘者的求职申请,一些应聘者提交了多份申请,我的目标是将数据集减少到每个应聘者最近的申请
我的代码如下:
import pandas as pd
data = {'application_date' : ["9/11/2020 10:30:31", "9/11/2020 11:07:59", "9/11/2020 11:09:02", "9/14/2020 13:14:31", "9/14/2020 13:15:15"],
'candidate_id' : ["001", "002", "002", "002", "002"]
}
df = pd.DataFrame(data)
df['application_date'] = pd.to_datetime(df['application_date'])
df['rank_application'] = df.groupby('candidate_id')['application_date'].rank(method='first')
这将返回以下内容:
application_date candidate_id rank_application
0 2020-09-11 10:30:31 001 1.0
1 2020-09-11 11:07:59 002 1.0
2 2020-09-11 11:09:02 002 2.0
3 2020-09-14 13:14:31 002 3.0
4 2020-09-14 13:15:15 002 4.0
这就是我被困的地方。从这里开始,我不知道如何仅将df减少到每个候选id的最新值。我最初希望按降序排列,然后找出如何获取rank\u application=1的行(但我无法理解)
以下是您需要的:
结果:
.iloc[]
获取一系列索引以获得适当的行。可能需要pd.to_datetime
语句来强制application_date
成为pd.Series.idxmax
工作的合适日期时间格式首先,因为这是时间数据中的排序和选择,所以您应该将列转换为pandate_time,以便在pandas上运行良好
然后,您可以通过
df['application_date'].agg(pd.Series.idxmax)
选择时间序列中的最大值来选择['application_date']。但是,由于您正在不同的id或等级中查找最新时间,因此需要添加groupby
以帮助为每个id提供最大选择如果您想选择申请日期:您可以通过
iloc
轻松地为它们编制索引我回答这个问题有点晚了。我在寻找类似的东西时偶然发现了这篇文章
这是我在寻找最新唱片时通常做的事情
问题中提出的最初方法是我遵循的
相关问题 更多 >
编程相关推荐