Chuyển đến nội dung chính

Hướng dẫn Pandas Drop Duplicates

Tìm hiểu cách loại bỏ bản ghi trùng lặp trong Python bằng pandas.
Đã cập nhật 5 thg 10, 2026  · 4 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Loại bỏ trùng lặp là kỹ năng thiết yếu để có số liệu thống kê chính xác, vì bạn thường không muốn đếm cùng một đối tượng nhiều lần. Trong Python, bạn có thể thực hiện điều này bằng mô-đun Pandas, với phương thức drop_duplicates.

Hãy cùng tìm hiểu cách sử dụng qua một vài ví dụ.

Loại bỏ tên trùng lặp

Giả sử bạn có một dataframe chứa các lần khám thú y, và phòng khám muốn biết có bao nhiêu chú chó của mỗi giống đã đến khám. Tuy nhiên, có những chú chó như Max và Stella đã đến khám nhiều hơn một lần trong tập dữ liệu. Do đó, bạn không thể chỉ đếm số lượng mỗi giống trong cột giống chó.

print(vet_visits)
          date     name        breed  weight_kg
0   2018-09-02    Bella     Labrador      24.87
1   2019-06-07      Max     Labrador      28.35
2   2018-01-17   Stella    Chihuahua       1.51
3   2019-10-19     Lucy    Chow Chow      24.07
..         ...      ...          ...        ...
71  2018-01-20   Stella    Chihuahua       2.83
72  2019-06-07      Max    Chow Chow      24.01
73  2018-08-20     Lucy    Chow Chow      24.40
74  2019-04-22      Max     Labrador      28.54

Để làm được điều này, bạn sẽ loại bỏ các hàng có tên chó đã xuất hiện trước đó, hay nói cách khác, bạn sẽ chỉ giữ lại một hàng cho mỗi tên chó trong tập dữ liệu.

Bạn có thể dùng phương thức drop_duplicates. Nó nhận tham số subset, là cột mà ta muốn tìm trùng lặp dựa trên đó — trong trường hợp này, ta muốn tất cả các tên duy nhất.

vet_visits.drop_duplicates(subset="name")
          date     name        breed  weight_kg
0   2018-09-02    Bella     Labrador      24.87
1   2019-06-07      Max    Chow Chow      24.01
2   2019-03-19  Charlie       Poodle      24.95
3   2018-01-17   Stella    Chihuahua       1.51
4   2019-10-19     Lucy    Chow Chow      24.07
7   2019-03-30   Cooper    Schnauzer      16.91
10  2019-01-04   Bernie  St. Bernard      74.98
(6  2019-06-07      Max     Labrador      28.35)

Nhưng nếu có những chú chó trùng tên thì sao?

Loại bỏ các cặp trùng lặp

Trong trường hợp đó, khi loại bỏ trùng lặp, ta cần xét nhiều hơn chỉ cột name. Vì hai mục Max thuộc các giống khác nhau, ta có thể loại bỏ các hàng có cặp giá trị tên và giống đã xuất hiện trước đó trong tập dữ liệu.

unique_dogs = vet_visits.drop_duplicates(subset=["name", "breed"])
print(unique_dogs)
          date     name        breed  weight_kg
0   2018-09-02    Bella     Labrador      24.87
1   2019-03-13      Max    Chow Chow      24.13
2   2019-03-19  Charlie       Poodle      24.95
3   2018-01-17   Stella    Chihuahua       1.51
4   2019-10-19     Lucy    Chow Chow      24.07
6   2019-06-07      Max     Labrador      28.35
7   2019-03-30   Cooper    Schnauzer      16.91
10  2019-01-04   Bernie  St. Bernard      74.98

Để dựa trên nhiều cột khi xác định trùng lặp, ta truyền một danh sách tên cột vào tham số subset, ở đây là name và breed.

Bây giờ cả hai mục Max đều đã được giữ lại.

Ví dụ tương tác

Trong bài tập này, bạn sẽ tạo một số DataFrame mới từ các giá trị duy nhất của sales. sales đã được cung cấp, và pandas đã được nhập với tên pd.

Bạn sẽ thực hiện các bước sau:

  • Đầu tiên, loại bỏ các hàng của sales có cặp store và type trùng lặp, lưu thành store_types và in phần đầu.
  • Sau đó, loại bỏ các hàng của sales có cặp store và department trùng lặp, lưu thành store_depts và in phần đầu.
  • Lọc các hàng là tuần nghỉ lễ và loại bỏ các date trùng lặp, lưu thành holiday_dates.
  • Cuối cùng, chọn cột date của holiday_dates và in dataframe holiday_dates.
# Drop duplicate store/type combinations
store_types = sales.drop_duplicates(subset=["store", "type"])
print(store_types.head())

# Drop duplicate store/department combinations
store_depts = sales.drop_duplicates(subset=["store", "department"])
print(store_depts.head())

# Subset the rows that are holiday weeks and drop duplicate dates
holiday_dates = sales[sales["is_holiday"]].drop_duplicates(subset="date")

# Print date col of holiday_dates
print(holiday_dates["date"])

Khi chạy đoạn mã trên, bạn sẽ nhận được kết quả sau:

      store type  department       date  weekly_sales  is_holiday  temperature_c  fuel_price_usd_per_l  unemployment
0         1    A           1 2010-02-05      24924.50       False          5.728                 0.679         8.106
901       2    A           1 2010-02-05      35034.06       False          4.550                 0.679         8.324
1798      4    A           1 2010-02-05      38724.42       False          6.533                 0.686         8.623
2699      6    A           1 2010-02-05      25619.00       False          4.683                 0.679         7.259
3593     10    B           1 2010-02-05      40212.84       False         12.411                 0.782         9.765
    store type  department       date  weekly_sales  is_holiday  temperature_c  fuel_price_usd_per_l  unemployment
0       1    A           1 2010-02-05      24924.50       False          5.728                 0.679         8.106
12      1    A           2 2010-02-05      50605.27       False          5.728                 0.679         8.106
24      1    A           3 2010-02-05      13740.12       False          5.728                 0.679         8.106
36      1    A           4 2010-02-05      39954.04       False          5.728                 0.679         8.106
48      1    A           5 2010-02-05      32229.38       False          5.728                 0.679         8.106
498    2010-09-10
691    2011-11-25
2315   2010-02-12
6735   2012-09-07
6810   2010-12-31
6815   2012-02-10
6820   2011-09-09
Name: date, dtype: datetime64[ns]

Tự bạn thử nhé.

Để tìm hiểu thêm về đếm và tổng hợp dữ liệu, vui lòng xem video từ khóa học Data Manipulation with pandas của chúng tôi.

Nội dung này được trích từ khóa học Data Manipulation with pandas của DataCamp do Maggie Matsui và Richie Cotton biên soạn.

Chủ đề
Python

Tìm hiểu thêm về Python và pandas

Khóa học

Xử lý dữ liệu với pandas

4 giờ
567.9K
Tìm hiểu cách nhập và làm sạch dữ liệu, tính toán thống kê và tạo trực quan hóa với pandas.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm