如何在Python中使用pandas做vLookup
Vlookup本质上用于垂直排列的数据。Vlookup是一个用来合并两个不同的数据表的操作,基于一些条件,两个表之间必须有至少一个共同的属性(列)。执行这个操作后,我们得到一个由两个表的所有数据组成的表,这些数据是匹配的。
我们可以使用merge()函数来执行pandas中的Vlookup。我们可以对表1或表2进行合并操作,可以有不同的方式来合并这两个表。
语法: dataframe.merge(dataframe1, dataframe2, how, on, copy, indicator, suffixes, validate)
参数:
datafram1:要合并的数据框架对象。
dataframe2:要合并的数据框架对象。
how: {left, right, inner, outer}指定如何进行合并。
on:指定用于执行连接的列或索引名称。
suffixes:用于重叠列的后缀。对于例外情况,使用值(False,False)。
validate:如果指定,检查合并的种类。合并的类型可以是(一对一、一多、多对一、多对多)。
让我们考虑对两个表进行操作。第一张表由学生的信息组成,第二列由他们各自注册的课程信息组成。下面的代码告诉我们这两个表中所包含的信息。
# import pandas
import pandas as pd
# read csv data
df1 = pd.read_csv('Student_data.csv')
df2 = pd.read_csv('Course_enrolled.csv')
print(df1)
print(df2)
输出
在不同类型的连接上执行Vlook
- 内联接: 内联接产生一个输出数据框,其中只有那些在两行中都满足条件的行。为了执行内联,你可以在how中指定inner作为一个关键字。
示例:
# import pandas
import pandas as pd
# read csv data
df1 = pd.read_csv('Student_data.csv')
df2 = pd.read_csv('Course_enrolled.csv')
inner_join = pd.merge(df1,
df2,
on ='Name',
how ='inner')
inner_join
-
输出
-
左联接: 左联接操作提供了第一数据框架的所有记录和第二数据框架的匹配记录。如果这些行在第2个数据框架中不匹配,那么它们将被替换为NaN。
示例:
# import pandas
import pandas as pd
# read csv data
df1 = pd.read_csv('Student_data.csv')
df2 = pd.read_csv('Course_enrolled.csv')
Left_join = pd.merge(df1,
df2,
on ='Name',
how ='left')
Left_join
-
输出:
-
右联接: 右联接有点类似于左联接,输出的数据框将由第二数据框的所有行和第一数据框的匹配行组成。如果在第一行中没有匹配的行,那么它们将被替换成NaN。
# import pandas
import pandas as pd
# read csv data
df1 = pd.read_csv('Student_data.csv')
df2 = pd.read_csv('Course_enrolled.csv')
Right_join = pd.merge(df1,
df2,
on ='Name',
how ='right')
Right_join
-
输出
-
外联接: 外联接提供了由两个数据框架的行组成的输出数据框架。如果有匹配的行,将显示数值,否则不匹配的行将显示为NaN。
示例:
# import pandas
import pandas as pd
# read csv data
df1 = pd.read_csv('Student_data.csv')
df2 = pd.read_csv('Course_enrolled.csv')
Outer_join = pd.merge(df1,
df2,
on ='Name',
how ='outer')
Outer_join
- 输出