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

Tìm và bổ sung phần tử thiếu trong Series Python

Mô tả bài toán

Cho Series: [1, 2, 3, 6, 7]. Phần tử 4 và 5 bị thiếu trong dãy liên tục từ 1 đến 7.

Yêu cầu: Tìm các phần tử thiếu và tạo Series mới chứa dãy đầy đủ [1, 2, 3, 4, 5, 6, 7].

Giải pháp: Duyệt vòng lặp kiểm tra

Lấy giá trị đầu và cuối, duyệt qua khoảng đó, thêm vào list mới nếu chưa có.

Ví dụ code

import pandas as pd
import numpy as np

l = [1, 2, 3, 6, 7]
l1 = []
data = pd.Series(l)
length = len(data)

# Duyệt từ phần tử đầu đến phần tử cuối
for i in range(data[0], data[length-1] + 1):  # +1 để bao gồm phần tử cuối
    if i not in data.values:
        l1.append(i)
    else:
        l1.append(i)

l1.sort()
data = pd.Series(l1)
print("Series đầy đủ:")
print(data)

Đầu ra

Series đầy đủ:
0    1
1    2
2    3
3    4
4    5
5    6
6    7
dtype: int64

Giải pháp tối ưu: Dùng reindex (khuyên dùng)

Pandas cung cấp reindex() để điền đầy đủ index.

import pandas as pd

data = pd.Series([1, 2, 3, 6, 7])
# Tạo index đầy đủ từ min đến max
full_index = range(data.min(), data.max() + 1)
# Reindex, giá trị thiếu sẽ thành NaN
data_full = data.reindex(full_index)
# Điền NaN bằng giá trị index (vì đây là dãy số liên tục)
data_full = data_full.fillna(data_full.index).astype(int)
print(data_full)

Ưu điểm: Code ngắn, vector hóa, hiệu năng tốt trên dữ liệu lớn.