Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เขียนโปรแกรม Python แยกตัวอักษรและตัวเลขใน Series แล้วแปลงเป็น DataFrame

สมมติว่าคุณมี Series ที่มีข้อมูลผสมตัวอักษรและตัวเลข (เช่น 'abx123') และต้องการแยกออกเป็นคอลัมน์ตัวอักษรและคอลัมน์ตัวเลข

วิธีแก้ปัญหา

  1. สร้าง Series
  2. ใช้ 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+)')