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

Python Pandas - Tính indexer và mask cho Index mới kể cả khi có giá trị trùng lặp

Để tính indexer và mask cho một Index mới ngay cả khi Index hiện tại có các giá trị không duy nhất (non-unique), sử dụng phương thức index.get_indexer_non_unique().

Các bước thực hiện

  1. Import thư viện: import pandas as pd
  2. Tạo Index có giá trị trùng lặp: index = pd.Index([10, 20, 30, 40, 40, 50, 60, 60, 60, 70])
  3. Gọi index.get_indexer_non_unique([30, 40, 90, 100, 50, 60]).

Ví dụ hoàn chỉnh

import pandas as pd

# Tạo Index với giá trị trùng lặp
index = pd.Index([10, 20, 30, 40, 40, 50, 60, 60, 60, 70])

print("Pandas Index...\n", index)
print("\nNumber of elements in the index...\n", index.size)

# Tính indexer và mask cho các giá trị mục tiêu
# Giá trị không có trong index được đánh dấu -1
print("\nGet the indexes...\n", index.get_indexer_non_unique([30, 40, 90, 100, 50, 60]))

Kết quả

Pandas Index...
 Int64Index([10, 20, 30, 40, 40, 50, 60, 60, 60, 70], dtype='int64')
Number of elements in the index...
 10
Get the indexes...
 (array([ 2,  3,  4, -1, -1,  5,  6,  7,  8], dtype=int64), array([2, 3], dtype=int64))

Giải thích:

  • Mảng đầu tiên: vị trí trong index gốc cho từng giá trị mục tiêu (giá trị trùng lặp được liệt kê hết, giá trị thiếu = -1).
  • Mảng thứ hai (mask): chỉ số của các giá trị mục tiêu không tìm thấy trong index gốc (ở đây là 90 và 100 tại vị trí 2, 3 của mảng mục tiêu).