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

时间:2018-05-30 15:02:40

标签: python pandas boolean slice

我想知道如何最简单的方法来选择列中的所有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

1 个答案:

答案 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