首页 > 解决方案 > 在熊猫数据框中水平移动布尔值

问题描述

假设我有一个布尔数据框,称为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)

标签: pythonpandas

解决方案


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

推荐阅读