Pandas: วิธีเปรียบเทียบสตริงระหว่างสองคอลัมน์


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

 df[' col1 ']. str . strip (). str . lower () == df[' col2 ']. str . strip (). str . lower ()

ฟังก์ชัน str.strip() จะลบช่องว่างออกจากแต่ละสตริง และฟังก์ชัน str.lower() จะแปลงแต่ละสตริงเป็นตัวพิมพ์เล็กก่อนที่จะทำการเปรียบเทียบ

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

ตัวอย่าง: เปรียบเทียบสตริงระหว่างสองคอลัมน์ใน Pandas

สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ซึ่งมีสองคอลัมน์พร้อมชื่อทีมบาสเก็ตบอล:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team1 ': ['Mavs', 'Hawks', 'Nets', 'Hornets', 'Lakers'],
                   ' team2 ': ['Mavs', 'Jazz', 'Nets', 'Hornets', 'LAKERS']})

#view DataFrame
print (df)

     team1 team2
0 Mavs Mavs 
1 Hawks Jazz
2 Nets Nets
3 Hornets Hornets 
4 Lakers LAKERS

โปรดทราบว่าชื่อทีมบางชื่อมีการเว้นวรรคในตำแหน่งสุ่ม และชื่อทีมบางชื่อจะใช้ตัวพิมพ์ใหญ่

สมมติว่าเราต้องการเปรียบเทียบสตริงในแต่ละแถวเพื่อดูว่าชื่อทีมในแต่ละแถวเท่ากันหรือไม่

หากเราใช้สัญลักษณ์ == เมื่อเปรียบเทียบสตริงเท่านั้น pandas จะส่งคืน ค่า True หากอยู่ในกรณีเดียวกันและมีช่องว่างในตำแหน่งเดียวกันทุกประการ:

 #create new column that tests if strings in team columns are equal
df[' equal '] = df[' team1 '] == df[' team2 ']

#view updated DataFrame
print (df)

     team1 team2 equal
0 Mavs Mavs False
1 Hawks Jazz False
2 Nets Nets True
3 Hornets Hornets False
4 Lakers LAKERS False

โปรดทราบว่ามีเพียงบรรทัดเดียวเท่านั้นที่ส่งคืน True เนื่องจากเป็นบรรทัดเดียวที่สตริงมีตำแหน่งตัวพิมพ์และช่องว่างเหมือนกัน

อย่างไรก็ตาม เราสามารถใช้ฟังก์ชัน str.strip() เพื่อลบช่องว่างออกจากแต่ละสตริง และฟังก์ชัน str.lower() เพื่อแปลงแต่ละสตริงเป็นตัวพิมพ์เล็กก่อนที่จะทำการเปรียบเทียบ:

 #remove whitespace and convert each string to lowercase, then compare strings
df[' equal '] = df[' team1 ']. str . strip (). str . lower () == df[' team2 ']. str . strip (). str . lower ()

#view updated DataFrame
print (df)

     team1 team2 equal
0 Mavs Mavs True
1 Hawks Jazz False
2 Nets Nets True
3 Hornets Hornets True
4 Lakers LAKERS True

ตอนนี้ทุกบรรทัดส่งคืน True ยกเว้นบรรทัดที่ชื่อทีมคือ “Hawks” และ “Jazz” เพราะแม้หลังจากลบช่องว่างและแปลงสตริงเป็นตัวพิมพ์เล็กแล้ว สตริงเหล่านี้ก็ไม่เท่ากัน

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

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

Pandas: วิธีลบอักขระเฉพาะออกจากสตริง
Pandas: ตรวจสอบว่าสตริงมีหลายสตริงย่อยหรือไม่
Pandas: วิธีแทนที่สตริงว่างด้วย NaN

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

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