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)