วิธีผสาน pandas dataframes ในหลายคอลัมน์


บ่อยครั้งที่คุณอาจต้องการรวม DataFrames แพนด้าสองตัวข้ามหลายคอลัมน์ โชคดีที่ทำได้ง่ายโดยใช้ฟังก์ชัน pandas merge() ซึ่งใช้ไวยากรณ์ต่อไปนี้:

 p.d. merge (df1, df2, left_on=['col1','col2'], right_on = ['col1','col2'])

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

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

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

 import pandas as pd

#create and view first DataFrame
df1 = pd.DataFrame({'a1': [0, 0, 1, 1, 2],
                   'b': [0, 0, 1, 1, 1],
                   'c': [11, 8, 10, 6, 6]})

print (df1)

   a1 bc
0 0 0 11
1 0 0 8
2 1 1 10
3 1 1 6
4 2 1 6

#create and view second DataFrame 
df2 = pd.DataFrame({'a2': [0, 1, 1, 1, 3],
                   'b': [0, 0, 0, 1, 1],
                   'd': [22, 24, 25, 33, 37]})

print (df2)

   a2 comic
0 0 0 22
1 1 0 24
2 1 0 25
3 1 1 33
4 3 1 37

รหัสต่อไปนี้แสดงวิธีการรวมด้านซ้ายโดยใช้หลายคอลัมน์จาก DataFrames ทั้งสอง:

 p.d. merge (df1, df2, how=' left ', left_on=[' a1 ', ' b '], right_on = [' a2 ', ' b '])


        a1 b c a2 d
0 0 0 11 0.0 22.0
1 0 0 8 0.0 22.0
2 1 1 10 1.0 33.0
3 1 1 6 1.0 33.0
4 2 1 6 NaN NaN

ตัวอย่างที่ 2: รวม หลายคอลัมน์ที่มีชื่อเดียวกัน

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

 import pandas as pd

#createDataFrames
df1 = pd.DataFrame({'a': [0, 0, 1, 1, 2],
                   'b': [0, 0, 1, 1, 1],
                   'c': [11, 8, 10, 6, 6]})

df2 = pd.DataFrame({'a': [0, 1, 1, 1, 3],
                   'b': [0, 0, 0, 1, 1],
                   'd': [22, 24, 25, 33, 37]})

ในกรณีนี้ เราสามารถทำให้การใช้ on = [‘a’, ‘b’] ง่ายขึ้นได้ เนื่องจากชื่อคอลัมน์เหมือนกันใน DataFrames ทั้งสอง:

 p.d. merge (df1, df2, how=' left ', on=[' a ', ' b '])

	a b c d
0 0 0 11 22.0
1 0 0 8 22.0
2 1 1 10 33.0
3 1 1 6 33.0
4 2 1 6 NaN

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

วิธีรวม Pandas DataFrames สองตัวบนดัชนี
วิธีซ้อน Pandas DataFrames หลายอัน

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

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