我想知道如何最简单的方法来选择列中的所有True行以及该组Trues中紧邻的Falses行。
TLDR;提取所有True行,以及上面的False行1, 每个True行下面1个。
这就是我的意思:
df
:
0 False
1 False
2 True
3 True
4 False
5 False
6 False
7 False
8 True
9 True
10 True
11 False
12 False
13 False
14 False
15 True
16 True
dtype: bool
然后,在运行代码之后,结果将是:
result
:
1 False
2 True
3 True
4 False
7 False
8 True
9 True
10 True
11 False
14 False
15 True
16 True
答案 0 :(得分:8)
我认为这可以满足需要:
import pandas as pd
df = pd.DataFrame({'value': [
False,
False,
True,
True,
False,
False,
False,
False,
True,
True,
True,
False,
False,
False,
False,
True,
True,
]})
result = df[df.value | df.value.shift(-1) | df.value.shift(1)]
print(result)
输出:
value
1 False
2 True
3 True
4 False
7 False
8 True
9 True
10 True
11 False
14 False
15 True
16 True