在熊猫数据框中水平移动布尔值

时间:2018-08-31 20:19:39

标签: python pandas

说我有一个布尔数据框,称为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 :(得分:2)

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

答案 1 :(得分:1)

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