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