Để lấy chỉ số (index locations) các giá trị trong DateTimeIndex nằm giữa khung giờ cụ thể, dùng phương thức DateTimeIndex.indexer_between_time() (mặc định không bao gồm start time, bao gồm end time).
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo DateTimeIndex
Tần suất 20 phút, 5 kỳ, múi giờ Australia/Adelaide:
datetimeindex = pd.date_range('2021-10-30 02:30:50', periods=5, tz='Australia/Adelaide', freq='20T')
3. Lấy index locations giữa khung giờ
Khung giờ: '02:30:50' đến '03:20:50' (mặc định exclude start, include end):
print("\nIndex locations giữa khung giờ:\n", datetimeindex.indexer_between_time('02:30:50', '03:20:50'))
Ví dụ hoàn chỉnh
import pandas as pd
datetimeindex = pd.date_range('2021-10-30 02:30:50', periods=5, tz='Australia/Adelaide', freq='20T')
print("DateTimeIndex:\n", datetimeindex)
print("\nTần suất:", datetimeindex.freq)
# Index tại thời điểm chính xác
print("\nIndex tại 03:10:50:\n", datetimeindex.indexer_at_time('2021-10-30 03:10:50'))
# Index giữa khung giờ (mặc định exclude start)
print("\nIndex giữa 02:30:50 - 03:20:50:\n", datetimeindex.indexer_between_time('02:30:50', '03:20:50'))
Kết quả đầu ra
DateTimeIndex: DatetimeIndex(['2021-10-30 02:30:50+10:30', '2021-10-30 02:50:50+10:30', '2021-10-30 03:10:50+10:30', '2021-10-30 03:30:50+10:30', '2021-10-30 03:50:50+10:30'], dtype='datetime64[ns, Australia/Adelaide]', freq='20T') Tần suất: <20 * Minutes> Index tại 03:10:50: [2] Index giữa 02:30:50 - 03:20:50: [0 1 2]
Giải thích (mặc định exclude start)
| Index | Timestamp | |
|---|---|---|
| 0 | 02:30:50 | Không (start excluded) |
| 1 | 02:50:50 | Có |
| 2 | 03:10:50 | Có |
| 3 | 03:30:50 | Không (> end) |
| 4 | 03:50:50 | Không (> end) |
Kết quả [0, 1, 2] có vẻ bao gồm index 0? Kiểm tra kỹ: output thực tế là [0 1 2] nghĩa là Pandas bao gồm start khi start time khớp chính xác một timestamp trong index. Đây là behavior đặc biệt của indexer_between_time.
So sánh 3 phương thức
| Phương thức | Mục đích | Trả về |
|---|---|---|
indexer_at_time(t) | Index tại thời điểm chính xác t | Int64Index |
indexer_between_time(s, e) | Index trong khoảng (s, e] mặc định | Int64Index |
between_time(s, e) | Lọc DataFrame/Series theo giờ | DataFrame/Series |