我想從我的資料框中洗掉比當前時間早 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' 的所有記錄
它應該從-2hrs的第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 |
uj5u.com熱心網友回復:
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
uj5u.com熱心網友回復:
應該洗掉所有早于 '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
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/448043.html
上一篇:正確的Python日期時間FMT
下一篇:嘗試在SQL中轉換日期時間格式
