我有一个数据集,希望看到最后一个和倒数第二个人持有相同的立场。
样本数据
ID Date Name Job Job_ID
101 01/2022 Adam Sales 1234
101 02/2022 Adam Sales 1234
101 03/2022 Adam Sales 1234
102 01/2022 Blake Tech 2345
102 02/2022 Blake Tech 2345
102 02/2022 Blake Consultant 3456
103 01/2022 Chris Advisor 4567
103 02/2022 Chris Analyst 5678
103 03/2022 Chris Analyst 5678
104 01/2022 Debbie Consultant 3456
104 02/2022 Debbie Consultant 3456
104 03/2022 Debbie Tech 2345
105 01/2022 Eric Analyst 5678
105 02/2022 Eric Advisor 4567
105 03/2022 Eric Advisor 4567
预期输出:
ID Name Job JobID Lastest Prior
101 Adam Sales 1234 Adam Adam
102 Blake Consultant 3456 Blake Debbie
103 Chris Analyst 5678 Chris Eric
104 Debbie Tech 2345 Debbie Blake
105 Eric Advisor 4567 Eric Chris
我有代码来获取最后一个:
manager_dict = df.groupby('ID').agg({'Name':'last'}).to_dict()['Name']
df['Latest'] = df['ID'].apply(lambda x: manager_dict[x])
我只是不知道如何让倒数第二个人担任这个职位。
3条答案
按热度按时间s71maibg1#
您可以用途:
输出:
ldxq2e6h2#
这里有另一种方法,首先按
Job_ID
分组,然后聚合Name
,另外两种方法生成Latest
和Prior
,然后将其连接回原始groupby:输出:
wljmcqd83#
首先创建字典,并将
named-aggregation
与GroupBy.agg
一起使用: