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

Tìm chỉ số (index) của giá trị NaN trong Series Python

Mô tả bài toán

Cho Series chứa NaN:

0    1.0
1    2.0
2    3.0
3    NaN
4    4.0
5    NaN
dtype: float64

Yêu cầu: In ra chỉ số (index) của các phần tử NaN. Kết quả: index is 3 và index is 5.

Giải pháp 1: Duyệt vòng lặp với np.isnan()

import pandas as pd
import numpy as np

l = [1, 2, 3, np.nan, 4, np.nan]
data = pd.Series(l)
print("Series gốc:")
print(data)

print("\nChỉ số các giá trị NaN:")
for idx, val in data.items():
    if np.isnan(val):
        print(f"index is {idx}")

Giải pháp 2: Vector hóa với isna() (khuyên dùng)

Pandas cung cấp isna() / isnull() trả về boolean Series.

import pandas as pd
import numpy as np

data = pd.Series([1, 2, 3, np.nan, 4, np.nan])

# Cách 1: Lấy index trực tiếp
nan_indices = data.index[data.isna()].tolist()
print("Chỉ số NaN (cách 1):", nan_indices)

# Cách 2: Dùng numpy where
nan_indices = np.where(data.isna())[0].tolist()
print("Chỉ số NaN (cách 2):", nan_indices)

# Cách 3: In từng dòng
for idx in data.index[data.isna()]:
    print(f"index is {idx}")

Đầu ra

Series gốc:
0    1.0
1    2.0
2    3.0
3    NaN
4    4.0
5    NaN
dtype: float64

Chỉ số NaN (cách 1): [3, 5]
Chỉ số NaN (cách 2): [3, 5]
index is 3
index is 5

Ưu điểm cách 2: Nhanh hơn, code ngắn gọn, phù hợp dữ liệu lớn.