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

Python Pandas - Xóa giá trị khi bất kỳ level nào là NaN trong MultiIndex

Để 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'.