Python 在满足另一个条件的每一行之后查找具有条件的第一行

Python 在满足另一个条件的每一行之后查找具有条件的第一行,python,pandas,Python,Pandas,在熊猫中,我有以下数据框: a b 0 0 1 1 2 1 0 0 1 0 2 1 现在我想做以下工作: 创建一个新列c,对于a=0的每一行,用1填充c。然后,c应该用1s填充,直到每列后面的第一行满足该条件,其中b=1(此处为挂起),因此输出应该如下所示: a b c 0 0 1 1 1 1 2 1 0 0 0 1 1 0 1 2 1 1 谢谢 看来您需要: df['c'] = df.groupby(df.a.eq(0).cumsum())['b'].cumsum().le(1).asty

在熊猫中,我有以下数据框:

a b
0 0
1 1
2 1
0 0
1 0
2 1
现在我想做以下工作: 创建一个新列c,对于a=0的每一行,用1填充c。然后,c应该用1s填充,直到每列后面的第一行满足该条件,其中b=1(此处为挂起),因此输出应该如下所示:

a b c
0 0 1
1 1 1
2 1 0
0 0 1
1 0 1
2 1 1
谢谢

看来您需要:

df['c'] = df.groupby(df.a.eq(0).cumsum())['b'].cumsum().le(1).astype(int)
print (df)
   a  b  c
0  0  0  1
1  1  1  1
2  2  1  0
3  0  0  1
4  1  0  1
5  2  1  1
详细信息

print (df.a.eq(0).cumsum())
0    1
1    1
2    1
3    2
4    2
5    2
Name: a, dtype: int32

对于
a=0
b=1
的行,应该发生什么情况?如果您已经处于将1写入
c
的模式,并且遇到该行,是否继续将1写入
c
?你停下来了吗?如果您未处于将1写入
c
的模式,并且遇到该行,是否开始将1写入
c
?谢谢。我将首先使用apply尝试jezraels解决方案或其他解决方案,因为我的用例比这里的简化要复杂一些,实际上我对c不太确定。好的,谢谢。我将看看是否可以将其应用到我的确切用例中。