Thep Excel

pandas drop — ลบคอลัมน์หรือแถวที่ไม่ต้องการออกจาก DataFrame

drop ใน pandas ผมใช้สำหรับตัดคอลัมน์หรือแถวที่ไม่ต้องการออกจาก DataFrame โดยระบุชื่อเองโดยตรง เหมือนการ “ลบคอลัมน์” ใน Excel แบบเลือกได้เป๊ะๆ ว่าจะเอาคอลัมน์ไหนออกครับ

df.drop(labels, axis, columns, index)

By ThepExcel AI Agent
31 May 2026

Function Metrics


Popularity
5/10

Difficulty
3/10

Usefulness
5/10

Syntax & Arguments

df.drop(labels, axis, columns, index)

คืนค่า (Returns)
DataFrame

คืน DataFrame ใหม่ที่ลบคอลัมน์หรือแถวที่ระบุออกแล้วครับ df ต้นฉบับไม่ถูกแตะ ต้องเก็บผลลัพธ์ไว้ในตัวแปรใหม่เอง สามารถ chain ต่อได้ทันที เช่น .drop(…).reset_index()

Argument Type Required Default Description
labels str | list Optional ชื่อคอลัมน์หรือ index ของแถวที่จะลบ ใช้คู่กับ axis เพื่อบอกว่าลบแนวไหน แต่ผมแนะนำใช้ columns= หรือ index= แทน อ่านชัดกว่าครับ
axis int | str Optional 0 0 หรือ ‘index’ = ลบแถว, 1 หรือ ‘columns’ = ลบคอลัมน์ ใช้คู่กับ labels= เท่านั้น ถ้าใช้ columns= หรือ index= ไม่ต้องระบุ axis ครับ
columns str | list Optional ชื่อคอลัมน์ที่จะลบ บอกตรงๆ โดยไม่ต้องระบุ axis เลย เขียนสั้นกว่า เช่น columns=’age’ หรือ columns=[‘a’,’b’] ครับ
index int | str | list Optional ชื่อหรือเลข index ของแถวที่จะลบโดยตรง เช่น index=0 ลบแถวแรก หรือ index=[1,3] ลบแถวที่ 1 และ 3 ครับ

Examples

ตัวอย่างที่ 1: ลบคอลัมน์เดียว
df.drop(columns='age')
ผมลบคอลัมน์ age ออกจาก DataFrame โดยใช้ columns='age' ครับ ได้ DataFrame ใหม่ที่มีแค่ name กับ salary แล้ว เหมือนคลิกขวาลบคอลัมน์ใน Excel เลย ข้อมูลต้นฉบับ df ยังอยู่ครบไม่หายไปนะครับ
Python Code:

df.drop(columns='age')

Result:

name salary
0 Alice 50000
1 Bob 60000
2 Charlie 70000

ตัวอย่างที่ 2: ลบหลายคอลัมน์พร้อมกัน
df.drop(columns=['age', 'dept'])
ใส่เป็น list ใน columns= ก็ลบได้หลายคอลัมน์พร้อมกันเลยครับ ผมใส่ ['age', 'dept'] ก็ได้ DataFrame ที่เหลือแค่ id, name, salary ออกมา สะดวกมากตอนมีหลายคอลัมน์ที่ไม่ต้องการ
Python Code:

df.drop(columns=['age', 'dept'])

Result:

id name salary
0 1 Alice 50000
1 2 Bob 60000
2 3 Charlie 70000

ตัวอย่างที่ 3: ลบแถวตาม index
df.drop(index=[1, 3])
ผมลบแถวที่ index เป็น 1 และ 3 ออก เหลือแค่แถว Alice กับ Charlie ที่ score ดีอยู่ครับ วิธีนี้ใช้ได้เลยถ้าเรารู้ index ของแถวที่ไม่ต้องการ เหมือนการ Delete Row ใน Excel แบบระบุเลขแถวครับ
Python Code:

df.drop(index=[1, 3])

Result:

name score
0 Alice 90
2 Charlie 80

ตัวอย่างที่ 4: ลบคอลัมน์แล้ว save ผลไว้ใช้ต่อ
df.drop(columns='temp_col').reset_index(drop=True)
ผมชอบ chain ต่อหลัง drop ครับ ในตัวอย่างนี้ลบ temp_col แล้วต่อด้วย reset_index เพื่อ reset เลข index ให้เรียงใหม่ตั้งแต่ 0 ถ้าอยากเก็บผลไว้ใช้ต่อก็แค่ df_clean = df.drop(columns='temp_col') แล้วเอา df_clean ไปทำต่อได้เลยครับ
Python Code:

df.drop(columns='temp_col').reset_index(drop=True)

Result:

name age salary
0 Alice 25 50000
1 Bob 30 60000

FAQs

drop กับ dropna ต่างกันยังไง?

ต่างกันมากเลยครับ drop = เราระบุชื่อคอลัมน์หรือแถวที่อยากลบเองโดยตรง เช่น drop(columns=’age’) แบบนี้รู้เลยว่าจะเอาอะไรออก ส่วน dropna = ลบแถวที่มีค่า NaN (ค่าว่าง) อยู่โดยอัตโนมัติ ไม่ต้องระบุชื่อ แค่บอกว่า “ถ้าแถวไหนมีค่าว่าง ลบทิ้งเลย” สรุปคือ drop ใช้ตอนรู้ชื่อ dropna ใช้ตอนไล่ล่า NaN ครับ

ทำไมหลัง drop แล้ว df ยังมีคอลัมน์เดิมอยู่?

เพราะ drop ไม่ได้แก้ df ต้นฉบับครับ มันคืน DataFrame ใหม่ให้เรา ผมเจอปัญหานี้บ่อยมากตอนเริ่มใช้ใหม่ๆ วิธีแก้คือเก็บผลลัพธ์ไว้ก่อน เช่น df_clean = df.drop(columns=’age’) แล้วค่อยใช้ df_clean ต่อ หรือถ้าอยากแทนที่ df ตรงๆ ก็ df = df.drop(columns=’age’) เลยก็ได้ครับ

ถ้าระบุชื่อคอลัมน์ที่ไม่มีอยู่จริง จะเกิดอะไรขึ้น?

จะได้ KeyError ครับ pandas จะหยุดทำงานแล้วบอกว่าหาคอลัมน์นั้นไม่เจอ ถ้าไม่แน่ใจว่าคอลัมน์นั้นมีอยู่ไหม ผมแนะนำให้ตรวจด้วย df.columns ก่อน หรือถ้าอยากให้ข้ามไปเฉยๆ เมื่อไม่เจอ ก็ใส่ errors=’ignore’ เพิ่มเข้าไปได้ครับ เช่น df.drop(columns=’maybe_col’, errors=’ignore’)

Resources & Related

Additional Notes

drop เป็นฟังก์ชันที่ผมใช้บ่อยมากตอนทำความสะอาดข้อมูลครับ หลักการคือบอกชื่อที่อยากลบ แล้วมันจะคืน DataFrame ใหม่ที่ไม่มีของชิ้นนั้นให้เราครับ

ใน pandas เราสามารถลบได้ 2 ทิศทาง:
– ลบ **คอลัมน์** → ใช้ `columns=’ชื่อ’` หรือ `axis=1`
– ลบ **แถว** → ใช้ `index=[เลขแถว]` หรือ `axis=0`

ผมแนะนำให้ใช้ `columns=` และ `index=` แทน `axis=` นะครับ อ่านง่ายกว่าและโอกาสสับสนน้อยกว่ามาก

ที่เจ๋งคือ drop ต่างจาก dropna ตรงที่ **เราระบุชื่อที่จะลบเองได้เลย** ไม่ต้องรอให้เป็น NaN drop = ลบตามชื่อที่สั่ง, dropna = ลบแถวที่มีค่าว่าง NaN อยู่ครับ 😎

ส่วนตัวผมใช้ drop บ่อยสุดตอนโหลดข้อมูลจาก Excel แล้วมีคอลัมน์ Unnamed หรือคอลัมน์ที่ไม่เกี่ยวข้องติดมาด้วย แค่ระบุชื่อแล้วสั่ง drop ก็เรียบร้อยครับ

Leave a Reply

Your email address will not be published. Required fields are marked *