Как получить истинные значения и фланкировать ложные значения в столбцах - PullRequest
0 голосов
/ 30 мая 2018

Мне интересно, как проще всего выбрать все столбцы True в столбце, а также сразу расположенные по бокам строки False из набора Trues.

TLDR;Извлеките все строки, которые имеют значение True, вместе со строками False, расположенными 1 выше и 1 под каждой строкой True.

Вот что я имею в виду:

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 голосов
/ 30 мая 2018

Я думаю, что это делает то, что нужно:

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
...