Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python – ลบแถวซ้ำ (Duplicate Rows) จาก Pandas DataFrame

ภาพรวม

ใช้ drop_duplicates() ลบแถวที่ซ้ำกันทั้งแถว (ทุกคอลัมน์เหมือนกัน) หรือระบุ subset ของคอลัมน์

ตัวอย่างโค้ด


import pandas as pd

dataFrame = pd.DataFrame({
    'Car': ['BMW', 'Mercedes', 'Lamborghini', 'BMW', 'Mercedes', 'Porsche'],
    'Place': ['Delhi', 'Hyderabad', 'Chandigarh', 'Delhi', 'Hyderabad', 'Mumbai'],
    'UnitsSold': [95, 70, 80, 95, 70, 90]
})

print("Dataframe...\n", dataFrame)

# นับก่อนลบ
count_before = dataFrame['Car'].value_counts()
print("\nCount in column Car before:")
print(count_before)

# ลบ duplicates (ทั้งแถว)
dataFrame = dataFrame.drop_duplicates()

print("\nUpdated DataFrame after removing duplicates...\n", dataFrame)

# นับหลังลบ
count_after = dataFrame['Car'].value_counts()
print("\nCount in column Car after:")
print(count_after)

ผลลัพธ์

Dataframe...
         Car       Place  UnitsSold
0        BMW      Delhi         95
1   Mercedes  Hyderabad         70
2  Lamborghini Chandigarh         80
3        BMW      Delhi         95
4   Mercedes  Hyderabad         70
5    Porsche    Mumbai         90

Count in column Car before:
BMW         2
Mercedes    2
Porsche     1
Lamborghini 1

Updated DataFrame after removing duplicates...
         Car       Place  UnitsSold
0        BMW      Delhi         95
1   Mercedes  Hyderabad         70
2  Lamborghini Chandigarh         80
5    Porsche    Mumbai         90

Count in column Car after:
BMW         1
Mercedes    1
Porsche     1
Lamborghini 1

พารามิเตอร์สำคัญของ drop_duplicates()


# ลบแถวซ้ำทั้งหมด (default)
df.drop_duplicates()

# ระบุ subset คอลัมน์ที่ใช้เปรียบเทียบ
df.drop_duplicates(subset=['Car', 'Place'])

# เก็บ first/last occurrence
df.drop_duplicates(keep='first')   # default
df.drop_duplicates(keep='last')    # เก็บตัวสุดท้าย
df.drop_duplicates(keep=False)     # ลบทิ้งทั้งหมดที่ซ้ำ

# Inplace
df.drop_duplicates(inplace=True)

สรุป

  • Default: เปรียบเทียบทุกคอลัมน์, keep='first'
  • ใช้ subset เพื่อ define "duplicate" ตาม business logic
  • reset_index() หลังลบถ้าต้องการ index เรียงใหม่