Để lấy vị trí (slice) và index con cho một nhãn/level trong MultiIndex mà không bỏ level đó, dùng MultiIndex.get_loc_level(key, drop_level=False).
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 vị trí và index con cho nhãn 'r' (level 0), không bỏ level
print("\nVị trí và index con (không bỏ level)...\n",
multiIndex.get_loc_level('r', drop_level=False))
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("\nVị trí và index con cho 'r' (không bỏ level)...\n",
multiIndex.get_loc_level('r', drop_level=False))
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']]
Vị trí và index con cho 'r' (không bỏ level)...
(slice(2, 4, None), MultiIndex([('r', 'r'), ('r', 'v')], names=['One', 'Two']))
Giải thích kết quả
Trả về tuple (slice, sub_index):
slice(2, 4, None): Các hàng từ index 2 đến 3 (không bao gồm 4) - vị trí của 'r' trong level 0MultiIndex([('r', 'r'), ('r', 'v')], names=['One', 'Two']): MultiIndex con chứa đầy đủ 2 level, chỉ các hàng khớp 'r' ở level 0
Tham số drop_level
| drop_level | Kết quả sub_index |
|---|---|
False (mặc định) | Giữ nguyên tất cả level → MultiIndex |
True | Bỏ level đã khớp → Index đơn giản (chỉ level còn lại) |