具有以下 Dataframe
d = {'c_1': [0,0,0,1,0,0,0,1,0,0,0,0],
'c_2': [0,0,0,0,0,1,0,0,0,0,0,1]}
df = pd.DataFrame(d)
我想创建另一个列'f',当c_1 == 1
时返回1,直到c_2 == 1
,在这种情况下,'f'中的值将为0
所需输出如下
c_1 c_2 f
0 0 0 0
1 0 0 0
2 0 0 0
3 1 0 1
4 0 0 1
5 0 1 0
6 0 0 0
7 1 0 1
8 0 0 1
9 0 0 1
10 0 0 1
11 0 1 0
我认为这需要某种条件性的向前填充,但是看了前面的问题,还没有能够达到预期的结果
**编辑:**遇到了一个相关的场景,其中输入不同,当前的解决方案不起作用。将确认已回答,但感谢您对以下内容的任何输入
d = {'c_1': [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0],
'c_2': [1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]}
df = pd.DataFrame(d)
所需的输出如下-与之前我想要创建的相同,另一列'f',当c_1 == 1
直到c_2 == 1
时返回1,在这种情况下,'f'中的值将为0
c_1 c_2 f
0 0 1 0
1 0 1 0
2 0 1 0
3 0 0 0
4 0 0 0
5 0 0 0
6 1 0 1
7 0 0 1
8 0 1 0
9 0 1 0
10 0 1 0
11 0 1 0
12 0 1 0
13 0 0 0
14 0 0 0
15 0 0 0
16 1 0 1
17 0 0 1
18 1 0 1
19 1 0 1
20 0 0 1
21 0 0 1
22 0 0 1
23 0 0 1
24 0 1 0
3条答案
按热度按时间mqxuamgl1#
您可以尝试:
5cnsuln72#
你也可以这样尝试:
多加一行。如果你不想包括结束位置。
最终:
ttygqcqt3#
这应该适用于以下两种情况:
或