สมมติว่าคุณมี Series ที่มีข้อมูลผสมตัวอักษรและตัวเลข (เช่น 'abx123') และต้องการแยกออกเป็นคอลัมน์ตัวอักษรและคอลัมน์ตัวเลข
วิธีแก้ปัญหา
- สร้าง Series ใช้
series.str.extract(r'(\w+[a-z])(\d+)') ด้วย regex แยกกลุ่มตัวอักษรและตัวเลข
ตัวอย่างโค้ด
import pandas as pd
series = pd.Series(['abx123', 'bcd25', 'cxy30'])
print("Series ต้นฉบับ:\n", series)
# Regex: (\w+[a-z]) = กลุ่มตัวอักษร, (\d+) = กลุ่มตัวเลข
df = series.str.extract(r'(\w+[a-z])(\d+)')
print("\nDataFrame หลังแยก:")
print(df)
ผลลัพธ์
Series ต้นฉบับ:
0 abx123
1 bcd25
2 cxy30
dtype: object
DataFrame หลังแยก:
0 1
0 abx 123
1 bcd 25
2 cxy 30
คำอธิบาย Regex:
(\w+[a-z]): จับกลุ่มตัวอักษร (word characters ต่อด้วย a-z)(\d+): จับกลุ่มตัวเลข 1 หลักขึ้นไปstr.extract()คืนค่า DataFrame ที่คอลัมน์แต่ละคอลัมน์คือแต่ละ capturing group- ถ้าต้องการตั้งชื่อคอลัมน์:
series.str.extract(r'(?P<letters>\w+[a-z])(?P<digits>\d+)')