在以下数据框中,我想根据特定条件创建新的二进制变量0或1。条件是id,其中t-1大小小于或等于2,t大小必须大于2且t + 1大小应大于2.并且年t + 1应该连续到t
我的数据框看起来像这样
id year size
1 2008 2
1 2009 3
1 2010 3
2 2011 1
2 2012 1
2 2013 1
3 2009 3
3 2010 2
3 2011 3
3 2012 3
我尝试使用np.where函数
df['new_variable'] = np.where((df.year.shift(-1) == df.year+ 1) & (df.year<2016) & (df.size.shift(1) < 3) & (df.size>2) & (df.size.shift(-1) > 2),1,0)
但首先我需要通过id执行此np.where,因为如果我执行我的np.where代码结果将是这样的,所以这就是为什么我首先需要'groupby'但不允许这样做。
id year size new variable
1 2008 2 0
1 2009 3 1
1 2010 3 0
2 2011 1 0
2 2012 1 0
2 2013 1 0
3 2009 3 1 #this 1 it's incorrect, because a new id begin
3 2010 2 1
3 2011 3 0
3 2012 3 0
实际输出应如下所示
id year size new variable
1 2008 2 0
1 2009 3 1
1 2010 3 0
2 2011 1 0
2 2012 1 0
2 2013 1 0
3 2009 3 0
3 2010 2 1
3 2011 3 0
3 2012 3 0