I want to remove data from my dataframe older than say 2 hours from current time starting with 00 mins (datetime column is in index)
when i use below code
JavaScript
x
2
1
df = df[df.index > df.index.max() - pd.Timedelta(hours=2)]
2
JavaScript
1
12
12
1
| datetime | value |
2
|---------------------|-------|
3
| 17-03-2022 15:05:00 | 78 |
4
| 17-03-2022 15:07:00 | 86 |
5
| 17-03-2022 15:57:00 | 77 |
6
| 17-03-2022 15:58:00 | 22 |
7
| 17-03-2022 15:59:00 | 10 |
8
| 17-03-2022 16:00:00 | 22 |
9
| 17-03-2022 16:01:00 | 25 |
10
| 17-03-2022 16:02:00 | 25 |
11
| 17-03-2022 17:05:00 | 34 |
12
Current datetime: ’17-03-2022 17:05:00′
Issue: My code keeps all records in df from ’17-03-2022 15:05:00′ to ’17-03-2022 17:05:00′
Requirement: All records in df from ’17-03-2022 15:00:00′ to ’17-03-2022 17:05:00′
It should start from 00th minute of -2hrs
JavaScript
1
13
13
1
| datetime | value |
2
|---------------------|-------|
3
| 17-03-2022 15:00:00 | 18 |
4
| 17-03-2022 15:05:00 | 78 |
5
| 17-03-2022 15:07:00 | 86 |
6
| 17-03-2022 15:57:00 | 77 |
7
| 17-03-2022 15:58:00 | 22 |
8
| 17-03-2022 15:59:00 | 10 |
9
| 17-03-2022 16:00:00 | 22 |
10
| 17-03-2022 16:01:00 | 25 |
11
| 17-03-2022 16:02:00 | 25 |
12
| 17-03-2022 17:05:00 | 34 |
13
Advertisement
Answer
Use Timestamp.floor
with change >
to >=
:
JavaScript
1
15
15
1
df = df[df.index >= (df.index.max() - pd.Timedelta(hours=2)).floor('H')]
2
print (df)
3
value
4
datetime
5
2022-03-17 15:00:00 18
6
2022-03-17 15:05:00 78
7
2022-03-17 15:07:00 86
8
2022-03-17 15:57:00 77
9
2022-03-17 15:58:00 22
10
2022-03-17 15:59:00 10
11
2022-03-17 16:00:00 22
12
2022-03-17 16:01:00 25
13
2022-03-17 16:02:00 25
14
2022-03-17 17:05:00 34
15