Pandas Vlookup
-
在 Pandas 中使用
Inner Join
執行 Vlookup -
在 Pandas 中使用
Left Join
執行 Vlookup -
在 Pandas 中使用
Right Join
執行 Vlookup -
在 Pandas 中使用
Outer Join
執行 Vlookup
Vlookup
代表垂直查詢。Vlookup 用於合併兩個不同的表,兩個表之間應該至少有一個共同的屬性。
作為輸出,我們將得到一個由兩個表中的資料組成的表。這個過程類似於 SQL 中的 join()
查詢。
要在 Python 中連線兩個 DataFrame,我們可以使用 Pandas 庫中提供的 merge()
方法。有很多方法可以合併兩個表。
在 Pandas 中使用 Inner Join
執行 Vlookup
Inner join
合併表中的那些行,這些行具有匹配的鍵值。它返回兩個表中滿足條件的所有行。
在下面的示例中,我們開啟了兩個表。Student
表由 ST_ID
、ST_NAME
和 Department
列組成。
另一個是 Course
表,其中包含有關學生註冊的課程的資訊。課程表的列是 ST_ID
和 Course
。
我們通過使用 Pandas 物件呼叫 merge()
方法來執行 inner join
,並傳遞了兩個表、合併表的列名和指定的 inner join
。
這兩個表將根據 ST_ID
值組合成一個表作為輸出。
如果學生表中的 ST_ID
值與課程表的 ST_ID
值匹配的條件,則將選擇這些記錄進行合併。這裡的 ST_ID
就像 SQL 中的外來鍵一樣工作。
# Python 3.x
import pandas as pd
student = pd.read_csv("student.csv")
course = pd.read_csv("Course.csv")
print(student)
print(course)
inner_join = pd.merge(student, course, on="ST_ID", how="inner")
print(inner_join)
輸出:
在 Pandas 中使用 Left Join
執行 Vlookup
Left join
的工作方式類似於 inner join
,但唯一的區別是它包括所有左表/第一個錶行和第二個表的匹配行。在下面的示例中,我們通過在 merge()
方法呼叫中指定 left
來執行 left join
。
作為輸出,我們可以看到所有匹配的記錄,加上左表中的額外記錄也包含在最終表中。如果在第二個表中沒有找到匹配的記錄,則該行的值將是 NaN
(不是數字)。
# Python 3.x
import pandas as pd
student = pd.read_csv("student.csv")
course = pd.read_csv("Course.csv")
print(student)
print(course)
left_join = pd.merge(student, course, on="ST_ID", how="left")
print(left_join)
輸出:
在 Pandas 中使用 Right Join
執行 Vlookup
右連線
與左連線
相反。右連線
就像內連線
;但是,唯一的區別是它包括所有正確的表/第二個錶行和兩個表的匹配行。
下面的示例通過在 merge()
方法呼叫中指定 right
來執行 right join
。作為輸出,我們可以看到所有匹配的記錄以及右表中的額外記錄都包含在最終表中。
如果在第一個表中沒有找到匹配的記錄,則該行的值將是 NaN
(不是數字)。
# Python 3.x
import pandas as pd
student = pd.read_csv("student.csv")
course = pd.read_csv("Course.csv")
print(student)
print(course)
right_join = pd.merge(student, course, on="ST_ID", how="right")
print(right_join)
輸出:
在 Pandas 中使用 Outer Join
執行 Vlookup
外連線
是左連線和右連線的組合。它結合了左表和右表中的所有行。
如果沒有找到匹配的值,NaN
將出現在該行中。
# Python 3.x
import pandas as pd
student = pd.read_csv("student.csv")
course = pd.read_csv("Course.csv")
print(student)
print(course)
outer_join = pd.merge(student, course, on="ST_ID", how="outer")
print(outer_join)
輸出:
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn