Home > database >  How to forward propagate/fill a specific value in a Pandas DataFrame Column/Series?
How to forward propagate/fill a specific value in a Pandas DataFrame Column/Series?

Time:04-19

I have a boolean column in a dataframe that looks like the following:

True
False
False
False
False
True
False
False
False

I want to forward propagate/fill the True values n number of times. e.g. 2 times:

True
True
True
False
False
True
True
True
False

the ffill does something similar for NaN values, but I can't find anything for a specific value as described. Is the easiest way to do this just to do a standard loop and just iterate over the rows and modify the column in question with a counter?

Each row is an equi-distant time series entry

CodePudding user response:

For 2 times you could have:

s = s | s.shift(1) | s.shift(2)

You could generalize to n-times from there.

CodePudding user response:

Try with rolling

n = 3
s.rolling(n, min_periods=1).max().astype(bool)
Out[147]: 
0     True
1     True
2     True
3    False
4    False
5     True
6     True
7     True
8    False
Name: s, dtype: bool
  • Related