Сдвиньте логическое значение по горизонтали в панде - PullRequest
0 голосов
/ 31 августа 2018

Скажем, у меня есть дата-логическое значение, называемое original:

original = pd.DataFrame([
    [True, False, False, True, False],
    [False, True, False, False, False]
])

  0     1     2     3     4
0 True  False False True  False
1 False True  False False False

И я хочу создать следующий логический фрейм данных (все справа от True теперь должны быть True):

  0     1     2     3     4
0 False True  True  True  True
1 False False True  True  True

Я сделал это следующим образом, но мне было интересно, есть ли у кого-нибудь менее громоздкий метод:

original.shift(axis=1).fillna(False).astype(int) \
    .T.replace(to_replace=0, method='ffill').T.astype(bool)

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

cummax

original.cummax(1).shift(axis=1).fillna(False)

       0      1     2     3     4
0  False   True  True  True  True
1  False  False  True  True  True
0 голосов
/ 31 августа 2018

IIUC

original[original].shift(1,axis=1).ffill(1).fillna(0).astype(bool)
Out[77]: 
       0      1     2     3     4
0  False   True  True  True  True
1  False  False  True  True  True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...