我正在尝试根据布尔输入和输出列在价格数据的时间序列中删除输入和输出点之间数据框中的所有行。
data = {'Entry': [True,True,True,False,False,False,False,True, False, False, False],
'Exit': [False,False,True,False,False,True,True,False, False, False, True]}
df = pd.DataFrame(data)
Entry Exit
0 True False
1 True False
2 True True
3 False False
4 False False
5 False True
6 False True
7 True False
8 False False
9 False False
10 False True
所以鉴于以上我想留给
Entry Exit
0 True False
2 True True
7 True False
10 False True
我需要从Entry列中获取第一个True,然后在Exit列中获取第二个True,然后在Entry列中获取下一个True,依此类推。
您可以使用zip
以下旧方式进行操作:
df = pd.DataFrame(data)
group = None
idx = []
for num, (a, b) in enumerate(zip(df["Entry"], df["Exit"])):
if a is True and not group:
idx.append(num)
group = True
if b is True and group:
if idx[-1] != num:
idx.append(num)
group = False
print (idx) # [0, 2, 7, 10]
print (df.loc[idx])
Entry Exit
0 True False
2 True True
7 True False
10 False True
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句