我在尝试创建一个新列时遇到了困难,该新列是基于“信号”列的检查列。如果最后五行(包括最后一行)为 1,则返回 1,如果最后五行(包括最后一行)为 0,则返回 0,其他都为 check 的最后一个值,如下所示:
我有以下数据框:
signal
index
0 1
1 1
2 1
3 1
4 1
5 1
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 1
14 0
15 1
16 1
17 1
18 1
19 1
我想要这样的东西:
signal check
index
0 1 1
1 1 1
2 1 1
3 1 1
4 1 1
5 1 1
6 0 1
7 0 1
8 0 1
9 0 1
10 0 0
11 0 0
12 0 0
13 1 0
14 0 0
15 1 0
16 1 0
17 1 0
18 1 0
19 1 1
我将不胜感激任何形式的帮助!
谢谢你!
Try rolling.sum
切片df
and ffill
, bfill
df['check'] = df[df.rolling(5).sum().isin([0, 5])].ffill().bfill()
Out[540]:
signal check
index
0 1 1.0
1 1 1.0
2 1 1.0
3 1 1.0
4 1 1.0
5 1 1.0
6 0 1.0
7 0 1.0
8 0 1.0
9 0 1.0
10 0 0.0
11 0 0.0
12 0 0.0
13 1 0.0
14 0 0.0
15 1 0.0
16 1 0.0
17 1 0.0
18 1 0.0
19 1 1.0
如果你想check
作为整数,只是链加法astype(int)
df['check'] = df[df.rolling(5).sum().isin([0, 5])].ffill().bfill().astype(int)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)