Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python Pandas - Lấy chỉ số index giá trị giữa khung giờ trong DateTimeIndex

Để 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)

Trong khoảng (02:30:50, 03:20:50]?
IndexTimestamp
002:30:50Không (start excluded)
102:50:50Có
203:10:50Có
303:30:50Không (> end)
403:50:50Khô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ứcMục đíchTrả về
indexer_at_time(t)Index tại thời điểm chính xác tInt64Index
indexer_between_time(s, e)Index trong khoảng (s, e] mặc địnhInt64Index
between_time(s, e)Lọc DataFrame/Series theo giờDataFrame/Series