วิธีการจับคู่แบบคลุมเครือในหมีแพนด้า (พร้อมตัวอย่าง)


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

วิธีที่ง่ายที่สุดในการจับคู่แบบคลุมเครือในแพนด้าคือการใช้ฟังก์ชัน get_close_matches() จากแพ็คเกจ difflib

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

ตัวอย่าง: การติดต่อแบบคลุมเครือในหมีแพนด้า

สมมติว่าเรามี DataFrames แพนด้าสองตัวต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับทีมบาสเก็ตบอลต่างๆ:

 import pandas as pd

#create two DataFrames
df1 = pd. DataFrame ({' team ': ['Mavericks', 'Nets', 'Warriors', 'Heat', 'Lakers'],
                    ' points ': [99, 90, 104, 117, 100]})

df2 = pd. DataFrame ({' team ': ['Mavricks', 'Warrors', 'Heat', 'Netts', 'Lakes'],
                    ' assists ': [22, 29, 17, 40, 32]})

#view DataFrames
print (df1)

        team points
0 Mavericks 99
1 Nets 90
2 Warriors 104
3 Heat 117
4 Lakers 100

print (df2)

       team assists
0 Mavricks 22
1 Warriors 29
2 Heat 17
3 Netts 40
4 Lakes 32

ตอนนี้ สมมติว่าเราต้องการรวม DataFrames ทั้งสองเข้าด้วยกันตามคอลัมน์ Team

เนื่องจากชื่อทีมระหว่าง DataFrames ทั้งสองมีความแตกต่างกันเล็กน้อย เราจึงจำเป็นต้องใช้การจับคู่แบบคลุมเครือเพื่อค้นหาชื่อทีมที่ตรงกับมากที่สุด

เราสามารถใช้ฟังก์ชัน get_close_matches() จากแพ็คเกจ difflib เพื่อทำสิ่งนี้:

 import difflib 

#create duplicate column to retain team name from df2
df2[' team_match '] = df2[' team ']

#convert team name in df2 to team name it most closely matches in df1
df2[' team '] = df2[' team ']. apply (lambda x: difflib. get_close_matches (x, df1[' team '])[ 0 ])

#merge the DataFrames into one
df3 = df1. merge (df2)

#view final DataFrame
print (df3)

        team points assists team_match
0 Mavericks 99 22 Mavricks
1 Nets 90 40 Nets
2 Warriors 104 29 Warriors
3 Heat 117 17 Heat
4 Lakers 100 32 Lakes

ผลลัพธ์คือเฟรมข้อมูลที่มีชื่อทีมทั้งห้าชื่อจาก DataFrame แรก รวมถึงทีมที่ตรงกับ DataFrame ที่สองมากที่สุด

คอลัมน์ team_match จะแสดงชื่อทีมจาก DataFrame ที่สองซึ่งตรงกับชื่อทีมจาก DataFrame แรกมากที่สุด

หมายเหตุ #1 : ตามค่าเริ่มต้น get_close_matches() ส่งคืนการจับคู่ที่ใกล้เคียงที่สุดสามรายการ อย่างไรก็ตาม เมื่อใช้ [0] ต่อท้ายฟังก์ชัน lambda เราก็สามารถส่งคืนการจับคู่ชื่อทีมที่ใกล้เคียงที่สุดเท่านั้น

หมายเหตุ #2: คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน get_close_matches() ได้ที่นี่

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

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

วิธีผสาน Pandas DataFrames ในหลายคอลัมน์
วิธีรวม Pandas DataFrames สองตัวบนดัชนี
Pandas เข้าร่วมหรือผสาน: อะไรคือความแตกต่าง?

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

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