Để 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ức | Trả 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ặplevels: Lấy danh sách giá trị hợp lệ, kiểm tra membershipcodes: Xử lý nội bộ, mapping, tối ưu bộ nhớ