删除早于特定时间的数据时间
Remove data time older than specific hours
我想从我的数据框中删除比当前时间早 2 小时的数据,从 00 分钟开始(日期时间列在索引中)
当我使用下面的代码时
df = df[df.index > df.index.max() - pd.Timedelta(hours=2)]
| datetime | value |
|---------------------|-------|
| 17-03-2022 15:05:00 | 78 |
| 17-03-2022 15:07:00 | 86 |
| 17-03-2022 15:57:00 | 77 |
| 17-03-2022 15:58:00 | 22 |
| 17-03-2022 15:59:00 | 10 |
| 17-03-2022 16:00:00 | 22 |
| 17-03-2022 16:01:00 | 25 |
| 17-03-2022 16:02:00 | 25 |
| 17-03-2022 17:05:00 | 34 |
当前日期时间:'17-03-2022 17:05:00'
问题:我的代码将所有记录保存在 df 中,从“17-03-2022 15:05:00”到“17-03-2022 17:05:00”
要求:df 中从“17-03-2022 15:00:00”到“17-03-2022 17:05:00”的所有记录
应该从-2 小时的第 00 分钟开始
| datetime | value |
|---------------------|-------|
| 17-03-2022 15:00:00 | 18 |
| 17-03-2022 15:05:00 | 78 |
| 17-03-2022 15:07:00 | 86 |
| 17-03-2022 15:57:00 | 77 |
| 17-03-2022 15:58:00 | 22 |
| 17-03-2022 15:59:00 | 10 |
| 17-03-2022 16:00:00 | 22 |
| 17-03-2022 16:01:00 | 25 |
| 17-03-2022 16:02:00 | 25 |
| 17-03-2022 17:05:00 | 34 |
should remove all data older than '17-03-2022 15:00:00'
如果您需要整整一个小时,请考虑使用 Timestamp.round
请考虑以下示例
import pandas as pd
tstamp = pd.Timestamp("17-03-2022 17:05:00")
tstamp2 = (tstamp - pd.Timedelta(hours=2)).round("H") # H for Hour
print(tstamp2)
输出
2022-03-17 15:00:00
使用 Timestamp.floor
并将 >
更改为 >=
:
df = df[df.index >= (df.index.max() - pd.Timedelta(hours=2)).floor('H')]
print (df)
value
datetime
2022-03-17 15:00:00 18
2022-03-17 15:05:00 78
2022-03-17 15:07:00 86
2022-03-17 15:57:00 77
2022-03-17 15:58:00 22
2022-03-17 15:59:00 10
2022-03-17 16:00:00 22
2022-03-17 16:01:00 25
2022-03-17 16:02:00 25
2022-03-17 17:05:00 34
我想从我的数据框中删除比当前时间早 2 小时的数据,从 00 分钟开始(日期时间列在索引中)
当我使用下面的代码时
df = df[df.index > df.index.max() - pd.Timedelta(hours=2)]
| datetime | value |
|---------------------|-------|
| 17-03-2022 15:05:00 | 78 |
| 17-03-2022 15:07:00 | 86 |
| 17-03-2022 15:57:00 | 77 |
| 17-03-2022 15:58:00 | 22 |
| 17-03-2022 15:59:00 | 10 |
| 17-03-2022 16:00:00 | 22 |
| 17-03-2022 16:01:00 | 25 |
| 17-03-2022 16:02:00 | 25 |
| 17-03-2022 17:05:00 | 34 |
当前日期时间:'17-03-2022 17:05:00'
问题:我的代码将所有记录保存在 df 中,从“17-03-2022 15:05:00”到“17-03-2022 17:05:00”
要求:df 中从“17-03-2022 15:00:00”到“17-03-2022 17:05:00”的所有记录
应该从-2 小时的第 00 分钟开始
| datetime | value |
|---------------------|-------|
| 17-03-2022 15:00:00 | 18 |
| 17-03-2022 15:05:00 | 78 |
| 17-03-2022 15:07:00 | 86 |
| 17-03-2022 15:57:00 | 77 |
| 17-03-2022 15:58:00 | 22 |
| 17-03-2022 15:59:00 | 10 |
| 17-03-2022 16:00:00 | 22 |
| 17-03-2022 16:01:00 | 25 |
| 17-03-2022 16:02:00 | 25 |
| 17-03-2022 17:05:00 | 34 |
should remove all data older than '17-03-2022 15:00:00'
如果您需要整整一个小时,请考虑使用 Timestamp.round
请考虑以下示例
import pandas as pd
tstamp = pd.Timestamp("17-03-2022 17:05:00")
tstamp2 = (tstamp - pd.Timedelta(hours=2)).round("H") # H for Hour
print(tstamp2)
输出
2022-03-17 15:00:00
使用 Timestamp.floor
并将 >
更改为 >=
:
df = df[df.index >= (df.index.max() - pd.Timedelta(hours=2)).floor('H')]
print (df)
value
datetime
2022-03-17 15:00:00 18
2022-03-17 15:05:00 78
2022-03-17 15:07:00 86
2022-03-17 15:57:00 77
2022-03-17 15:58:00 22
2022-03-17 15:59:00 10
2022-03-17 16:00:00 22
2022-03-17 16:01:00 25
2022-03-17 16:02:00 25
2022-03-17 17:05:00 34