วิธีแยกตัวเลขจากสตริงใน pandas


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อแยกตัวเลขจากสตริงในหมีแพนด้า:

 df[' my_column ']. str . extract (' (\d+) ')

ไวยากรณ์เฉพาะนี้จะแยกตัวเลขจากแต่ละสตริงลงในคอลัมน์ที่เรียกว่า my_column ใน Pandas DataFrame

หมายเหตุ : เมื่อใช้นิพจน์ทั่วไป \d แทน “ตัวเลขใดๆ” และ + หมายถึง “หนึ่งหรือมากกว่า”

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ

ตัวอย่าง: แยกตัวเลขออกจากสตริงใน Pandas

สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับการขายผลิตภัณฑ์ต่างๆ:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' product ': ['A33', 'B34', 'A22', 'A50', 'C200', 'D7', 'A9', 'A13'],
                   ' sales ': [18, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  product sales
0 A33 18
1 B34 22
2 A22 19
3 A50 14
4 C200 14
5 D7 11
6 A9 20
7 A13 28

สมมติว่าเราต้องการแยกจำนวนของแต่ละสตริงออกจากคอลัมน์ ผลคูณ

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อทำสิ่งนี้:

 #extract numbers from strings in 'product' column
df[' product ']. str . extract (' (\d+) ')

	0
0 33
1 34
2 22
3 50
4,200
5 7
6 9
7 13

ผลลัพธ์คือ DataFrame ที่ประกอบด้วยตัวเลขในแต่ละแถวของคอลัมน์ ผลิตภัณฑ์ เท่านั้น

ตัวอย่างเช่น:

  • สูตรแยก 33 จากสตริง A33 ในบรรทัดแรก
  • สูตรจะแยก 34 ออกจากสตริง B34 ในบรรทัดแรก
  • สูตรจะแยก 22 ออกจากสตริง A22 ในแถวแรก

และอื่นๆ

หากต้องการ คุณยังสามารถเก็บค่าตัวเลขเหล่านี้ไว้ในคอลัมน์ใหม่ของ DataFrame ได้:

 #extract numbers from strings in 'product' column and store them in new column
df[' product_numbers '] = df[' product ']. str . extract (' (\d+) ')

#view updated DataFrame
print (df)

  product sales product_numbers
0 A33 18 33
1 B34 22 34
2 A22 19 22
3 A50 14 50
4 C200 14,200
5 D7 11 7
6 A9 20 9
7 A13 28 13

คอลัมน์ใหม่ชื่อ product_numbers มีเพียงตัวเลขสำหรับแต่ละสตริงในคอลัมน์ ผลิตภัณฑ์

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ในแพนด้า:

Pandas: วิธีเรียงลำดับ DataFrame ตามคอลัมน์สตริง
Pandas: วิธีลบอักขระเฉพาะออกจากสตริง
Pandas: ค้นหาสตริงในคอลัมน์ทั้งหมดของ DataFrame

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *