Pandas 用匹配的值填充前向数据帧
我有一个布尔数据框。我想替换直接位于Pandas 用匹配的值填充前向数据帧,pandas,Pandas,我有一个布尔数据框。我想替换直接位于True值之后的2个False值。我认为这个方法可以做到这一点,因为第五个例子似乎就是我要找的 以下是我的工作: dataIn = pd.DataFrame([False, False, False, True, False, False, False, False]) dataOut = dataIn.replace(to_replace=False, method='ffill', limit=2) >>> TypeError: No m
True
值之后的2个False
值。我认为这个方法可以做到这一点,因为第五个例子似乎就是我要找的
以下是我的工作:
dataIn = pd.DataFrame([False, False, False, True, False, False, False, False])
dataOut = dataIn.replace(to_replace=False, method='ffill', limit=2)
>>> TypeError: No matching signature found
以下是我想要的输出:
dataOut = pd.DataFrame([False, False, False, True, True, True, False, False])
定义一个函数,该函数有条件地将前两个元素替换为True: 触发此更换的条件是:
- 组有2个或更多元素
- 该组仅由假值组成
定义一个函数,该函数有条件地将前两个元素替换为True: 触发此更换的条件是:
- 组有2个或更多元素
- 该组仅由假值组成
感谢以上两个答案。但实际上,似乎可以使用
.replace()
,但它不能完全处理布尔值。
通过将它们临时替换为int
,可以使用它:
dataIn = pd.DataFrame([False, False, False, True, False, False, False, False])
dataOut = dataIn.astype(int).replace(to_replace=False, method='ffill', limit=2).astype(bool)
感谢以上两个答案。但实际上,似乎可以使用
.replace()
,但它不能完全处理布尔值。
通过将它们临时替换为int
,可以使用它:
dataIn = pd.DataFrame([False, False, False, True, False, False, False, False])
dataOut = dataIn.astype(int).replace(to_replace=False, method='ffill', limit=2).astype(bool)
1) 不要使用关键字(input
)作为变量。2) 您的输入是数据帧还是序列?1)更改了变量名。2) 例如,它可以是一个系列,但我的案例是一个由多个列组成的数据场1)不要使用关键字(input
)作为变量。2) 您的输入是数据帧还是序列?1)更改了变量名。2) 例如,它可以是一个系列,但我的案例是一个包含多个列的数据场
dataIn[0] = dataIn[0].groupby(s.ne(s.shift()).cumsum()).transform(condRepl)
dataIn = pd.DataFrame([False, False, False, True, False, False, False, False])
dataOut = dataIn.astype(int).replace(to_replace=False, method='ffill', limit=2).astype(bool)