我有一个熊猫数据帧,看起来像这样:
name job jobchange_rank date
Thisguy Developer 1 2012
Thisguy Analyst 2 2014
Thisguy Data Scientist 3 2015
Anotherguy Developer 1 2018
职位变动排名代表每个人(基于姓名)的职位变动排名,其中排名1代表他/她的第一个职位,排名2代表他/她的第二个职位,等等
现在是有趣的部分。我想创建一个新的列,在这里我可以看到一个人以前的工作,类似这样:
name job jobchange_rank date previous_job
Thisguy Developer 1 2012 None
Thisguy Analyst 2 2014 Developer
Thisguy Data Scientist 3 2015 Analyst
Anotherguy Developer 1 2018 None
我创建了以下代码来获取没有职务更改的“None”值:
df.loc[df['jobchange_rank'].sub(df['jobchange_rank'].min()) == 0, 'previous_job'] = 'None'
遗憾的是,我似乎不知道如何从需要的条件应用的另一列中获取值。你知道吗
欢迎任何帮助! 提前谢谢。你知道吗
这个答案假设您的数据帧是按
name
和jobchange_rank
排序的,如果不是这样,请先排序。你知道吗或者使用
groupby
+shift
(假设至少按jobchange_rank
排序)尽管
groupby
+shift
更简洁,但是在较大的输入上,如果您的数据已经像您的示例那样进行了排序,那么避免使用groupby
并使用第一种解决方案可能会更快。你知道吗相关问题 更多 >
编程相关推荐