[pandas Tips] การดึง Text ใน dataframe โดยการใช้แพทเทิร์น Regex extract ใน pandas
get text from pattern pandas

extract ใน python pandas กัน !
รูปปก: Moralized Ovid in Prose II
สารบัญ
• คำสั่งช่วยชีวิต str.extract(r”) + Regex
สมมุติว่าเรามีข้อมูลเบอร์โทรศัพท์ แล้วเราอยากให้ pandas เช็คข้อความที่มีแพทเทิร์นลักษณะเฉพาะหนึ่ง เช่นต้องเป็นชุดตัวเลขสามหลัก – เลขสามหลัก – เลขสี่หลัก
ddd-ddd-dddd (เช่น 081-333-4444)
แล้วเราจึงจะดึงตัวอักษรสามหลักแรกขึ้นมา ในตัวอย่างก็คือดึงเฉพาะ 081 เราสามารถใช้
.str.extract(r’แพทเทิร์น Regexที่เราสนใจ’)
ได้ ยกตัวอย่าง DataFrame นี้ มีค่าทั้งตัวเลขผสมกับตัวอักษร

• อธิบายโค้ด
ใช้คำสั่งสีน้ำเงินที่ให้ไว้ด้านบน เราอยากจับแพทเทิร์น
ชุดตัวเลขสามหลัก – เลขสามหลัก – เลขสี่หลัก
ในความหมาย Regex = (\d{3})-\d{3}-\d{4}
- \d = แปลว่าตัวเลข
- {3} = สามหลัก
- {4} = สี่หลัก
(\d{3})-\d{3}-\d{4}
จากนั้นเราใส่ ( ) ครอบไว้ที่ก้อนแรก เพราะเราอยากดึงเลขสามหลักก้อนแรกขึ้นมา
ถ้าสมมุติเราอยากดึงเลขสี่หลักด้านหลังสุดแทน ก็ให้ไปครอบวงเล็บที่ก้อนด้านหลังแทน นั่นคือ
(\d{3})-\d{3}-(\d{4})

ส่วนอัน ถ้าหาไม่เจอ ให้เปลี่ยนค่าเป็นเลข 0 เพราะจากคำสั่งสั่ง str.extract() บรรทัดที่ไม่ตรงกับแพทเทิร์นจะคืนค่าออกมาเป็น NaN เราเลยครอบฟังก์ชั่นอีกทีให้ถ้ามันไม่ตรงแพทเทิร์นให้เปลี่ยนไปใช้เลข 0 แทน ซึ่งเป็น Optional นะ บรรทัดนี้ ไม่ต้องทำตามเราก็ได้
• ตัวอย่างโค้ดจริง
import re
import pandas as pd
import numpy as np
data={'x':['212-222-5796'],'y':['887-541-6624'],'z':['Hello World'],'w':['asc-qwer-tyh']}
df_test=pd.DataFrame.from_dict(data,orient='index',columns=['Tel']).reset_index().drop(columns=['index'])
#จับตัวอักษรตัวเลขสามตัวแรก
df_test['tel_ex']=df_test['Tel'].str.extract(r'(\d{3})-\d{3}-\d{4}')
#ถ้าหาไม่เจอ ให้เปลี่ยนค่าเป็นเลข 0
df_test['tel_ex']=np.where(df_test['tel_ex'].isna(),0,df_test['tel_ex'])
df_test

• หากคุณชอบโพสนี้ สนับสนุนคนเขียนบน ko-fi ได้ 👍
หากคุณชอบคอนเทนต์ของพวกเรา อยากเป็นสายซัพ สนับสนุน ช่วยค่าขนมและกาแฟ เป็นครั้งคราว สามารถซัพพอร์ตที่ ko-fi ได้จ้า (www.ko-fi.com/gleegmjournal) คลิก

• บล็อกหัวข้ออื่น ๆ ที่คุณอาจสนใจ
🔑 แลก goodreads, MyAnimeList, letterboxd ติดตามเพจ Facebook กันได้ใน About Me
📊[Excel/Google Sheets Tips] รวมสูตรคลีนลิงค์เว็บ URL ด้วย regex (ลบ/ดึงตัวอักษรใน URL)
📊 [Excel Tips] Find and Replace ดอกจัน (*) ใน Excel ต้องกรอกว่า ~* นะ
📖 รีวิว Effective Pandas โดย Matt Harrison ตำราสำหรับคนโฟกัส python pandas โดยเฉพาะ
💻 รีวิว Datacamp เว็บไซต์เรียน Data แบบจับมือพิมพ์
✒ บันทึกเรียน Datacamp Course Journal ประจำปี 2025 | 2024 | 2023
✒ [Tableau Tips] Start-End Date Calculation to auto compare MOM on parameter
📊 บล็อกหัวข้อ Data Analytics สารพัดวงการ Data และเรื่อง Techๆ | 🏀 กีฬา คลิก |
📺 รีวิว Anime อนิเมะ |🎧 รีวิว Music ดนตรี | 🎬 รีวิว Film Series หนัง ซีรีส์ | 🪴 สารบัญรีวิวทุกประเภท All Reviews



