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不太确定。好的,谢谢。我将看看是否可以将其应用到我的确切用例中。