Để xóa giá trị khi bất kỳ level nào trong MultiIndex là NaN, hãy sử dụng phương thức multiIndex.dropna() với tham số how='any'.
Các bước thực hiện
1. Import thư viện cần thiết
import pandas as pd
import numpy as np
2. Tạo MultiIndex có một số NaN
multiIndex = pd.MultiIndex.from_arrays([[5, 10], [np.nan, 20], [25, np.nan], [35, 40]], names=['a', 'b', 'c', 'd'])
3. Xóa giá trị khi bất kỳ level nào là NaN
print("\nXóa giá trị khi bất kỳ level nào là NaN...\n", multiIndex.dropna(how='any'))
Ví dụ hoàn chỉnh
import pandas as pd
import numpy as np
# Tạo MultiIndex có NaN
# names đặt tên cho các level
multiIndex = pd.MultiIndex.from_arrays([[5, 10], [np.nan, 20], [25, np.nan], [35, 40]], names=['a', 'b', 'c', 'd'])
# Hiển thị MultiIndex
print("MultiIndex...\n", multiIndex)
# Xóa khi bất kỳ level nào là NaN (how='any')
# Chỉ cần 1 level NaN là row bị xóa
print("\nXóa giá trị khi bất kỳ level nào là NaN...\n", multiIndex.dropna(how='any'))
Kết quả đầu ra
MultiIndex...
MultiIndex([( 5, nan, 25.0, 35), (10, 20.0, nan, 40)], names=['a', 'b', 'c', 'd'])
Xóa giá trị khi bất kỳ level nào là NaN...
MultiIndex([], names=['a', 'b', 'c', 'd'])
Giải thích: Row 1 có NaN ở level 'b', Row 2 có NaN ở level 'c'. Với how='any', chỉ cần 1 level NaN là row bị xóa → cả 2 row đều bị xóa, trả về MultiIndex rỗng. how='any' nghiêm ngặt hơn how='all'.