Để tính indexer và tìm chỉ số trước đó (forward fill / ffill) nếu không khớp chính xác, sử dụng phương thức index.get_indexer() với tham số method='ffill'.
Các bước thực hiện
- Import thư viện:
import pandas as pd - Tạo Index:
index = pd.Index([10, 20, 30, 40, 50, 60, 70]) - Gọi
index.get_indexer([30, 20, 75, 80, 50, 59], method="ffill").
Ví dụ hoàn chỉnh
import pandas as pd
index = pd.Index([10, 20, 30, 40, 50, 60, 70])
print("Pandas Index...\n", index)
print("\nNumber of elements in the index...\n", index.size)
# Tính indexer với method='ffill' (tìm giá trị trước đó nhỏ hơn hoặc bằng)
print("\nGet the indexes...\n", index.get_indexer([30, 20, 75, 80, 50, 59], method="ffill"))
Kết quả
Pandas Index...
Int64Index([10, 20, 30, 40, 50, 60, 70], dtype='int64')
Number of elements in the index...
7
Get the indexes...
[2 1 6 6 4 4]
Giải thích:
- 30 → chỉ số 2 (khớp chính xác)
- 20 → chỉ số 1 (khớp chính xác)
- 75, 80 → lớn hơn tất cả giá trị trong index → lấy giá trị cuối cùng (70) tại chỉ số 6
- 50 → chỉ số 4
- 59 → giá trị trước đó ≤ 59 là 50 → chỉ số 4