AJHello
AJHello

Reputation: 105

How to change value by checking if row x+1-row x is greater than certain value(pandas)

I have a table that looks like this:

Dates,               Minutes
1/24/2020 2:58:04 PM, 0
1/24/2020 3:13:04 PM, 0
1/27/2020 10:04:09 AM, 3
1/27/2020 10:19:09 AM, 0
1/27/2020 10:34:09 AM, 0
1/27/2020 10:49:10 AM, 1
1/27/2020 11:04:09 AM, 0
1/27/2020 11:19:09 AM, 1
1/27/2020 11:34:09 AM, 1
1/27/2020 11:49:09 AM, 0
1/27/2020 12:04:09 PM, 13
1/27/2020 12:19:09 PM, 0
1/27/2020 12:34:09 PM, 0
1/27/2020 12:49:09 PM, 0
1/27/2020 1:04:09 PM, 11
1/27/2020 1:19:09 PM, 26
1/27/2020 1:34:09 PM, 41
1/27/2020 1:49:09 PM, 0
1/27/2020 2:04:09 PM, 0
1/27/2020 2:19:09 PM, 12
1/27/2020 2:34:09 PM, 0

I am looking to check if the difference between the current row from the previous row is greater than, or equal to, 15 and if it is then to change the value to 15. So the new table would look like:

Dates,               Minutes
1/24/2020 2:58:04 PM, 0
1/24/2020 3:13:04 PM, 0
1/27/2020 10:04:09 AM, 3
1/27/2020 10:19:09 AM, 0
1/27/2020 10:34:09 AM, 0
1/27/2020 10:49:10 AM, 1
1/27/2020 11:04:09 AM, 0
1/27/2020 11:19:09 AM, 1
1/27/2020 11:34:09 AM, 1
1/27/2020 11:49:09 AM, 0
1/27/2020 12:04:09 PM, 13
1/27/2020 12:19:09 PM, 0
1/27/2020 12:34:09 PM, 0
1/27/2020 12:49:09 PM, 0
1/27/2020 1:04:09 PM, 11
1/27/2020 1:19:09 PM, 15*
1/27/2020 1:34:09 PM, 15*
1/27/2020 1:49:09 PM, 0
1/27/2020 2:04:09 PM, 0
1/27/2020 2:19:09 PM, 12
1/27/2020 2:34:09 PM, 0

*=value changed

Upvotes: 1

Views: 160

Answers (2)

Umar.H
Umar.H

Reputation: 23099

Another method using .loc & shift

df.loc[(df['Minutes'] - df['Minutes'].shift(1)).ge(15),'Minutes'] = 15

print(df)

                    Dates  Minutes
0    1/24/2020 2:58:04 PM        0
1    1/24/2020 3:13:04 PM        0
2   1/27/2020 10:04:09 AM        3
3   1/27/2020 10:19:09 AM        0
4   1/27/2020 10:34:09 AM        0
5   1/27/2020 10:49:10 AM        1
6   1/27/2020 11:04:09 AM        0
7   1/27/2020 11:19:09 AM        1
8   1/27/2020 11:34:09 AM        1
9   1/27/2020 11:49:09 AM        0
10  1/27/2020 12:04:09 PM       13
11  1/27/2020 12:19:09 PM        0
12  1/27/2020 12:34:09 PM        0
13  1/27/2020 12:49:09 PM        0
14   1/27/2020 1:04:09 PM       11
15   1/27/2020 1:19:09 PM       15
16   1/27/2020 1:34:09 PM       15
17   1/27/2020 1:49:09 PM        0
18   1/27/2020 2:04:09 PM        0
19   1/27/2020 2:19:09 PM       12
20   1/27/2020 2:34:09 PM        0

Upvotes: 1

BENY
BENY

Reputation: 323226

Let us do

df.Minutes = df.Minutes.mask(df.Minutes.diff().ge(15), 15)

Upvotes: 2

Related Questions