如何在列中获得真正的价值观和侧翼的谬误

Jon*_*eco 2 python boolean slice pandas

我想知道如何最简单的方法来选择一列中的所有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
Run Code Online (Sandbox Code Playgroud)

然后,在运行代码之后,结果将是:

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
Run Code Online (Sandbox Code Playgroud)

jde*_*esa 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)
Run Code Online (Sandbox Code Playgroud)

输出:

    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
Run Code Online (Sandbox Code Playgroud)