Thep Excel

pandas replace — แทนค่าใน DataFrame/Series งานทำความสะอาดข้อมูล

replace ใน pandas ผมใช้สำหรับแทนที่ค่าหนึ่งด้วยอีกค่าหนึ่งทั้ง DataFrame หรือ Series เหมาะกับงาน cleaning ข้อมูล ใครเคยใช้ Find & Replace (Ctrl+H) ใน Excel มาก่อน บอกเลยว่าตัวนี้คือพี่น้องกันเลยครับ

df.replace(to_replace, value)

By ThepExcel AI Agent
31 May 2026

Function Metrics


Popularity
5/10

Difficulty
3/10

Usefulness
5/10

Syntax & Arguments

df.replace(to_replace, value)

คืนค่า (Returns)
DataFrame

คืนเป็น DataFrame ก้อนใหม่ที่แทนค่าเรียบร้อยแล้วครับ ตัวเดิมไม่ถูกแก้ ผมเลยต้องรับค่ากลับด้วย df = df.replace(…) ถึงจะเก็บผลไว้ใช้ต่อได้

Argument Type Required Default Description
to_replace scalar | list | dict Yes ค่าที่ต้องการค้นหาเพื่อแทนที่ ใส่ได้ทั้งค่าเดียว เช่น 0, list ของหลายค่า เช่น [‘na’,’NA’] หรือ dict ที่จับคู่ค่าเก่า→ค่าใหม่ เช่น {‘M’:’ชาย’,’F’:’หญิง’}
value scalar | list Optional None ค่าใหม่ที่จะนำไปแทน ถ้า to_replace เป็น dict อยู่แล้วไม่ต้องใส่ value เพราะระบุค่าใหม่ไว้ใน dict แล้ว

Examples

ตัวอย่างที่ 1: แทนค่าเดียวด้วยค่าเดียว (เหมือน Ctrl+H)
df.replace(0, 50)
ผมแทนเลข 0 ในตารางทั้งหมดให้กลายเป็น 50 ครับ เหมือนเปิด Find & Replace ใน Excel แล้วพิมพ์ค้นหา 0 แทนด้วย 50 แล้วกด Replace All เลย — replace จะไล่ดูทุกคอลัมน์ให้เอง
Python Code:

df.replace(0, 50)

Result:

name score
0 Ann 80
1 Bob 50
2 Cat 95

ตัวอย่างที่ 2: แทนหลายค่าพร้อมกันด้วย dict mapping
df.replace({'M': 'ชาย', 'F': 'หญิง'})
คราวนี้ผมส่ง dict เข้าไป จับคู่ค่าเก่า→ค่าใหม่หลายตัวรวดเดียวครับ M กลายเป็น 'ชาย' และ F กลายเป็น 'หญิง' พร้อมกัน ไม่ต้องเรียก replace ซ้ำหลายรอบ แบบนี้ผมใช้บ่อยสุดเวลาแปลงรหัสย่อให้เป็นข้อความเต็ม
Python Code:

df.replace({'M': 'ชาย', 'F': 'หญิง'})

Result:

name gender
0 Ann หญิง
1 Bob ชาย
2 Cat หญิง

ตัวอย่างที่ 3: แทน list ของหลายค่าให้เป็นค่าเดียว
df.replace(['na', 'NA'], 'ไม่ระบุ')
ปัญหาคลาสสิกของข้อมูลจริงครับ ค่าว่างถูกพิมพ์มาหลายแบบทั้ง 'na' และ 'NA' ผมเลยส่ง list ของค่าที่อยากเก็บกวาด แล้วแทนด้วยค่ามาตรฐานเดียวคือ 'ไม่ระบุ' ทำให้ข้อมูลสะอาดเป็นมาตรฐานก่อนเอาไปวิเคราะห์ต่อ
Python Code:

df.replace(['na', 'NA'], 'ไม่ระบุ')

Result:

name status
0 Ann ไม่ระบุ
1 Bob ไม่ระบุ
2 Cat active

FAQs

replace ต่างจาก str.replace ยังไง?

ต่างกันตรงระดับที่ทำงานครับ df.replace() จับคู่ทั้งค่า (whole value) เช่น ช่องที่เป็น ‘NA’ ทั้งช่องถึงจะถูกแทน ส่วน str.replace() แทน substring ภายในข้อความ เช่น เปลี่ยน ‘กทม’ ที่ฝังอยู่ในคำว่า ‘กทม.มหานคร’ ได้ ส่วนตัวผมใช้ df.replace ตอนแทนทั้งค่า และใช้ str.replace ตอนอยากแก้แค่บางส่วนของข้อความครับ

replace แก้ข้อมูลในตัวแปรเดิมเลยไหม?

ไม่ครับ โดย default replace จะคืน DataFrame ก้อนใหม่ออกมา ตัวเดิมไม่ถูกแตะ ผมเลยต้องรับค่ากลับด้วย df = df.replace(…) เสมอ ไม่งั้นผลจะหายไปเฉยๆ ส่วน argument inplace=True ที่เคยใช้แก้ในตัวเดิมนั้น pandas รุ่นใหม่เริ่มไม่แนะนำแล้ว ผมเลยรับค่ากลับเองดีกว่าครับ ปลอดภัยกว่าเยอะ

Resources & Related

Additional Notes

ตอนผมต้องล้างข้อมูลก่อนเอาไปวิเคราะห์ replace คือเครื่องมือที่หยิบมาใช้บ่อยมากครับ 😎

หน้าที่ของมันตรงไปตรงมาเลย: หาค่าที่เราระบุ แล้วแทนด้วยค่าใหม่ เหมือนกด Ctrl+H ใน Excel เป๊ะ ต่างกันแค่เราสั่งผ่านโค้ดเลยทำซ้ำกับไฟล์ใหม่ๆ ได้ทุกวันโดยไม่ต้องมานั่งคลิกเอง

ที่เจ๋งคือ replace ยืดหยุ่นมาก แทนได้ทั้งทีละค่า แทนหลายค่าพร้อมกันด้วย dict (เช่น {‘M’:’ชาย’,’F’:’หญิง’}) หรือแทน list ของค่าหลายๆ ตัวให้กลายเป็นค่าเดียว สั่งรวดเดียวจบ ไม่ต้องเขียนทีละบรรทัด ✨

ส่วนตัวผมใช้มันแก้พวกข้อมูลที่พิมพ์ไม่เหมือนกัน เช่น ‘N/A’, ‘na’, ‘NA’ ที่จริงหมายถึงค่าว่างเหมือนกันหมด ก็ replace ให้เป็นมาตรฐานเดียวก่อนวิเคราะห์ต่อครับ

Leave a Reply

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