【发布时间】:2021-09-16 08:40:41
【问题描述】:
我有一个 pandas 数据框,想创建一个新列,其值基于 groupby 的第一行和最后一行的条件。需要的条件是
mgr to mgr = 被聘为经理
emp 到经理 = 晋升为经理
emp to emp = 雇佣为emp
mgr 到 emp = 状态变化
date email level
01/01/2000 john@abc.com mgr
05/06/2000 john@abc.com mgr
10/01/2001 john@abc.com mgr
14/02/2000 kimdo@abc.com emp
19/10/2001 kimdo@abc.com mgr
12/05/2000 waint@abc.com emp
08/08/2000 waint@abc.com emp
14/04/2001 waint@abc.com emp
22/05/2000 neds@abc.com mgr
08/11/2000 neds@abc.com mgr
12/06/2001 neds@abc.com emp
希望达到以下结果
date email level status
01/01/2000 john@abc.com mgr hired as mgr
10/01/2001 john@abc.com mgr hired as mgr
14/02/2000 kimdo@abc.com emp promoted to mgr
19/10/2001 kimdo@abc.com mgr promoted to mgr
12/05/2000 waint@abc.com emp hired as emp
14/04/2001 waint@abc.com emp hired as emp
22/05/2000 neds@abc.com mgr status change
12/06/2001 neds@abc.com emp status change
到目前为止,我能够根据 groupyby 选择数据帧的第一行和最后一行,但我不完全确定如何应用条件来获取新的“状态”列。感谢任何形式的帮助,谢谢。
df2 = df.groupby('email', as_index=False).nth([0,-1])
【问题讨论】:
标签: python pandas dataframe group-by conditional-statements