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

Python Pandas - Lấy giá trị level theo vị trí trong MultiIndex

Để lấy vector giá trị của một level trong MultiIndex bằng vị trí số nguyên (0-based), dùng MultiIndex.get_level_values(level) với tham số là số nguyên.

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

1. Import thư viện

import pandas as pd

2. Tạo MultiIndex

multiIndex = pd.MultiIndex.from_arrays(
    [list('pqrrss'), list('strvwx')],
    names=['One', 'Two']
)

3. Hiển thị MultiIndex

print("MultiIndex...\n", multiIndex)

4. Lấy giá trị level 0 (vị trí đầu tiên)

print("\nGiá trị level 0...\n",
      multiIndex.get_level_values(0))

Ví dụ hoàn chỉnh

import pandas as pd

multiIndex = pd.MultiIndex.from_arrays(
    [list('pqrrss'), list('strvwx')],
    names=['One', 'Two']
)

print("MultiIndex...\n", multiIndex)
print("\nCác level trong MultiIndex...\n", multiIndex.levels)
print("\nGiá trị level 0...\n",
      multiIndex.get_level_values(0))

Kết quả đầu ra

MultiIndex...
MultiIndex([('p', 's'), ('q', 't'), ('r', 'r'), ('r', 'v'), ('s', 'w'), ('s', 'x')],
           names=['One', 'Two'])

Các level trong MultiIndex...
[['p', 'q', 'r', 's'], ['r', 's', 't', 'v', 'w', 'x']]

Giá trị level 0...
Index(['p', 'q', 'r', 'r', 's', 's'], dtype='object', name='One')

Giải thích

  • Level 0 (tên 'One'): giá trị ['p', 'q', 'r', 'r', 's', 's'] - giữ thứ tự và trùng lặp
  • Level 1 (tên 'Two'): giá trị ['s', 't', 'r', 'v', 'w', 'x']
  • get_level_values(0) ≡ get_level_values('One')

So sánh: get_level_values vs levels vs codes

Phương thứcTrả vềVí dụ level 0
get_level_values(0)Index đầy đủ (có trùng, giữ thứ tự)['p','q','r','r','s','s']
levels[0]Index giá trị duy nhất (sorted)['p','q','r','s']
codes[0]ndarray int (vị trí trong levels)[0,1,2,2,3,3]

Khi nào dùng cái nào?

  • get_level_values: Lọc, groupby, hiển thị, cần giữ thứ tự và trùng lặp
  • levels: Lấy danh sách giá trị hợp lệ, kiểm tra membership
  • codes: Xử lý nội bộ, mapping, tối ưu bộ nhớ