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

Kiểm tra Series có phần tử trùng lặp Python

Mô tả bài toán

Cho Series, kiểm tra xem có chứa phần tử trùng lặp (duplicate) hay không.

Ví dụ 1: [1,2,3,4,5] -> Không trùng.
Ví dụ 2: [1,2,3,4,5,3] -> Có trùng (số 3).

Giải pháp 1: So sánh độ dài với unique (cách gốc)

import pandas as pd
import numpy as np

# Trường hợp không trùng
data1 = pd.Series([1,2,3,4,5])
has_dup1 = len(data1) != len(np.unique(data1))
print(f"Series 1: {'Có trùng' if has_dup1 else 'Không trùng'}")

# Trường hợp có trùng
data2 = pd.Series([1,2,3,4,5,3])
has_dup2 = len(data2) != len(np.unique(data2))
print(f"Series 2: {'Có trùng' if has_dup2 else 'Không trùng'}")

Giải pháp 2: Dùng duplicated() (khuyên dùng - chuẩn pandas)

import pandas as pd

data1 = pd.Series([1,2,3,4,5])
data2 = pd.Series([1,2,3,4,5,3])

# any() trả về True nếu có ít nhất 1 duplicate
print(f"Series 1 có trùng: {data1.duplicated().any()}")
print(f"Series 2 có trùng: {data2.duplicated().any()}")

# Xem chi tiết các bản ghi trùng
print("\nChi tiết duplicate Series 2:")
print(data2[data2.duplicated(keep=False)])

Giải pháp 3: Dùng nunique()

import pandas as pd

data = pd.Series([1,2,3,4,5,3])
# nunique() đếm số giá trị duy nhất
has_duplicate = len(data) != data.nunique()
print(f"Có trùng lặp: {has_duplicate}")
print(f"Số phần tử: {len(data)}, Số giá trị duy nhất: {data.nunique()}")

Đầu ra

Series 1: Không trùng
Series 2: Có trùng

Series 1 có trùng: False
Series 2 có trùng: True

Chi tiết duplicate Series 2:
2    3
5    3
dtype: int64

Có trùng lặp: True
Số phần tử: 6, Số giá trị duy nhất: 5

Khuyên dùng: duplicated().any() hoặc len != nunique() - đều vector hóa, nhanh, dễ đọc.