仅在第一次时,在另一个变量等于1之前分配值1 [英] Assign a value of 1 before another variable was equal 1, only for the first time

查看:71
本文介绍了仅在第一次时,在另一个变量等于1之前分配值1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个数据框:

ID  X1  X2  Y
 A  11  47  0
 A  11  87  0
 A  56  33  0
 A  92  72  1
 A  83  34  0
 A  34  31  0
 B  88  62  1
 B  28  71  0
 B  95  28  0
 B  92  87  1
 B  91  45  0
 C  46  59  0
 C  60  68  1
 C  67  78  0
 C  26  26  0
 C  13  77  0
 D  40  95  0
 D  25  26  1
 D  93  31  0
 D  71  67  0
 D  91  24  1
 D  80  19  0
 D  44  49  0
 D  41  84  1
 E  38  10  0
 F  23  75  1
 G  46  58  1
 G  44  52  0

我想在Y等于1第一次之前分配一个1值.否则,0.

I want to assign a value of 1 before Y was equal 1, for the first time only. Otherwise, 0.

否则"表示Y已经(或等于)1.

"Otherwise" means Y was already (or is) equal 1.

  • 注意:应分别对每个ID 应用.

预期结果:

ID  X1  X2  Y  before
 A  11  47  0       1
 A  11  87  0       1
 A  56  33  0       1
 A  92  72  1       0
 A  83  34  0       0
 A  34  31  0       0
 B  88  62  1       0
 B  28  71  0       0
 B  95  28  0       0
 B  92  87  1       0
 B  91  45  0       0
 C  46  59  0       1
 C  60  68  1       0
 C  67  78  0       0
 C  26  26  0       0
 C  13  77  0       0
 D  40  95  0       1
 D  25  26  1       0
 D  93  31  0       0
 D  71  67  0       0
 D  91  24  1       0
 D  80  19  0       0
 D  44  49  0       0
 D  41  84  1       0
 E  38  10  0       1
 F  23  75  1       0
 G  46  58  1       0
 G  44  52  0       0

推荐答案

IIUC

df['New']=df.groupby('ID').Y.cumsum().eq(0).astype(int)
df
   ID  X1  X2  Y  New
0   A  11  47  0    1
1   A  11  87  0    1
2   A  56  33  0    1
3   A  92  72  1    0
4   A  83  34  0    0
5   A  34  31  0    0
6   B  88  62  1    0
7   B  28  71  0    0
8   B  95  28  0    0
9   B  92  87  1    0
10  B  91  45  0    0
11  C  46  59  0    1
12  C  60  68  1    0
13  C  67  78  0    0
14  C  26  26  0    0
15  C  13  77  0    0
16  D  40  95  0    1
17  D  25  26  1    0
18  D  93  31  0    0
19  D  71  67  0    0
20  D  91  24  1    0
21  D  80  19  0    0
22  D  44  49  0    0
23  D  41  84  1    0
24  E  38  10  0    1
25  F  23  75  1    0
26  G  46  58  1    0
27  G  44  52  0    0

这篇关于仅在第一次时,在另一个变量等于1之前分配值1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆