Home > front end >  Compare current row value to all 6 previous row values
Compare current row value to all 6 previous row values

Time:08-24

I want to compare a current row value with all the previous 6 row values and return True if it is greater than all 6 of them.

I tried:

df.close > df.close.shift(-6)

However it does not return what I need as it only compares the current row value with values 6 rows back.

Here is a sample dataframe with close values if you would like to try. In this example df, the value at index 1495 should return true as 0.604 is greater than all 6 previous values. Thankyou in advance!

close
1479    0.356
1480    0.371
1481    0.359
1482    0.386
1483    0.388
1484    0.362
1485    0.362
1486    0.310
1487    0.314
1488    0.349
1489    0.351
1490    0.387
1491    0.423
1492    0.416
1493    0.450
1494    0.561
1495    0.604
1496    0.571
1497    0.539
1498    0.537

CodePudding user response:

You can try Series.rolling. Here use window 7 is to not include current row in previous 6 rows

df['res'] = (df['close'].rolling(window=7, min_periods=1)
             .apply(lambda w: w.iloc[:-1].lt(w.iloc[-1]).all()))
print(df)

      close  res
1479  0.356  1.0
1480  0.371  1.0
1481  0.359  0.0
1482  0.386  1.0
1483  0.388  1.0
1484  0.362  0.0
1485  0.362  0.0
1486  0.310  0.0
1487  0.314  0.0
1488  0.349  0.0
1489  0.351  0.0
1490  0.387  1.0
1491  0.423  1.0
1492  0.416  0.0
1493  0.450  1.0
1494  0.561  1.0
1495  0.604  1.0
1496  0.571  0.0
1497  0.539  0.0
1498  0.537  0.0
  • Related