| |

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

tsuki blog_thumbnail
มาดึง Text ใน dataframe โดยการใช้แพทเทิร์น Regex
extract ใน python pandas กัน !
รูปปก: Moralized Ovid in Prose II

• คำสั่งช่วยชีวิต str.extract(r”) + Regex

สมมุติว่าเรามีข้อมูลเบอร์โทรศัพท์ แล้วเราอยากให้ pandas เช็คข้อความที่มีแพทเทิร์นลักษณะเฉพาะหนึ่ง เช่นต้องเป็นชุดตัวเลขสามหลัก – เลขสามหลัก – เลขสี่หลัก

แล้วเราจึงจะดึงตัวอักษรสามหลักแรกขึ้นมา ในตัวอย่างก็คือดึงเฉพาะ 081 เราสามารถใช้

ได้ ยกตัวอย่าง 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) คลิก

support gleegmjournal on ko-fi

บล็อกหัวข้ออื่น ๆ ที่คุณอาจสนใจ

🔑 แลก goodreads, MyAnimeList, letterboxd ติดตามเพจ Facebook กันได้ใน About Me

📊 [BigQuery Tips] มาระบุ Schemas ด้วย JSON ให้ BigQuery ไม่หลอนเวลาเราอัปไฟล์ CSV, GG Sheets ตอนสร้างเทเบิล

📊[Excel/Google Sheets Tips] รวมสูตรคลีนลิงค์เว็บ URL ด้วย regex (ลบ/ดึงตัวอักษรใน URL)

📊 [Excel Tips] Find and Replace ดอกจัน (*) ใน Excel ต้องกรอกว่า ~* นะ

📖 รีวิว Effective Pandas โดย Matt Harrison ตำราสำหรับคนโฟกัส python pandas โดยเฉพาะ

📊 [pandas Tips] มาระเบิดคอลัมน์ที่ Value เป็นลิสต์ a,b,c ไปขึ้นบรรทัดใหม่กัน ! Let’s Explode a list to new row on pandas/BigQuery

💻 รีวิว 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

Loading

Similar Posts