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