我是一个stata用户,我试图将我的代码传递给python。我正在处理以下问题,我想创建一个名为null
的新变量,它显示jobs_t5
在接下来的5年中有以下条件id
时的作业。 df.year==df.cohort
来自此数据框的示例传递:
df.cohort <= 2013
成:
id year entry cohort jobs year_of_life
1 2009 0 NaN 10 NaN
1 2012 1 2012 12 0
1 2013 0 2012 12 1
1 2014 0 2012 13 2
1 2015 0 2012 15 3
1 2016 0 2012 17 4
1 2017 0 2012 18 5
2 2009 1 2009 15 0
2 2010 0 2009 2 1
2 2011 0 2009 3 2
2 2012 0 2009 3 3
2 2013 0 2009 15 4
2 2014 0 2009 12 5
2 2015 0 2009 13 6
2 2016 0 2009 13 7
答案 0 :(得分:2)
假设您打算将year
与cohort
进行比较,您可以将jobs
向上移动5个点,然后进行索引和分配。
df['jobs_t5'] = df.jobs.shift(-5)[df.year == df.cohort]
df
id year entry cohort jobs year_of_life jobs_t5
0 1 2009 0 NaN 10 NaN NaN
1 1 2012 1 2012.0 12 0.0 18.0
2 1 2013 0 2012.0 12 1.0 NaN
3 1 2014 0 2012.0 13 2.0 NaN
4 1 2015 0 2012.0 15 3.0 NaN
5 1 2016 0 2012.0 17 4.0 NaN
6 1 2017 0 2012.0 18 5.0 NaN
7 2 2009 1 2009.0 15 0.0 12.0
8 2 2010 0 2009.0 2 1.0 NaN
9 2 2011 0 2009.0 3 2.0 NaN
10 2 2012 0 2009.0 3 3.0 NaN
11 2 2013 0 2009.0 15 4.0 NaN
12 2 2014 0 2009.0 12 5.0 NaN
13 2 2015 0 2009.0 13 6.0 NaN
14 2 2016 0 2009.0 13 7.0 NaN