Pandas: วิธีรวม dataframes สองตัวที่มีชื่อคอลัมน์ต่างกัน


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

 p.d. merge (df1, df2, left_on=' left_column_name ', right_on=' right_column_name ')

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

ตัวอย่าง: รวม Pandas DataFrames สองตัวที่มีชื่อคอลัมน์ต่างกัน

สมมติว่าเรามี DataFrames แพนด้าสองตัวต่อไปนี้:

 import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F'],
                    ' points ': [4, 4, 6, 8, 9, 5]})

#view DataFrame
print (df1)

  team points
0 to 4
1 B 4
2 C 6
3 D 8
4 E 9
5 F 5

#create second DataFrame
df2 = pd. DataFrame ({' team_name ': ['A', 'B', 'C', 'D', 'E', 'F'],
                    ' rebounds ': [12, 7, 8, 8, 5, 11]})

#view DataFrame
print (df2)

  team_name rebounds
0 to 12
1 B 7
2 C 8
3 D 8
4 E 5
5 F 11

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อดำเนินการรวมภายใน โดยใช้คอลัมน์ ทีม ใน DataFrame แรกและคอลัมน์ team_name ใน DataFrame ที่สอง:

 #merge DataFrames
df3 = pd. merge (df1, df2, left_on=' team ', right_on=' team_name ')

#view result
print (df3)

  team points team_name rebounds
0 A 4 A 12
1 B 4 B 7
2 C 6 C 8
3 D 8 D 8
4 E 9 E 5
5 F 5 F 11

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

โปรดทราบว่าเรายังสามารถใช้โค้ดต่อไปนี้เพื่อลบคอลัมน์ team_name ออกจาก DataFrame ที่ผสานสุดท้ายได้ เนื่องจากค่าในคอลัมน์นี้ตรงกับค่าในคอลัมน์ ทีม :

 #drop team_name column
df3. drop (' team_name ', axis= 1 , inplace= True )

#view updated DataFrame
print (df3)

  team points rebounds
0 to 4 12
1 B 4 7
2 C 6 8
3 D 8 8
4 E 9 5
5 F 5 11

โปรดทราบว่าคอลัมน์ team_name ถูกลบออกจาก DataFrame

ที่เกี่ยวข้อง: วิธีลบคอลัมน์ใน Pandas (4 ตัวอย่าง)

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

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

วิธีเปลี่ยนลำดับคอลัมน์ใน Pandas
วิธีเปลี่ยนชื่อคอลัมน์ใน Pandas
วิธีจัดเรียงคอลัมน์ตามชื่อใน Pandas

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

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