Pandas 中的不同类型的连接
pandasserver side programmingprogramming更新于 2025/11/6 13:24:00
Pandas 是用于执行数据分析和数据处理的流行库之一。有许多高级功能可用于处理表格数据,例如根据公共列或列索引将多个数据框合并为一个。
在 Python 中,有不同类型的连接可用,可以通过使用 merge() 函数以及 pandas 库的 how 参数来执行。以下是不同的连接。
内连接
外连接
左连接
右连接
交叉连接
内连接
pandas 库中的内连接将返回在定义的数据框和输出中具有相同值的行。我们可以观察数据框中具有相同列的列。以下是在数据框上应用内连接的语法。
import pandas as pd pd.merge(dataframe1,dataframe2,how='inner'
其中,
pandas 是库的名称。
pd 是别名。
merge 是执行连接操作的函数。
how 指定连接操作的类型。
示例
在此示例中,我们将通过分配 inner 将两个数据框连同'how'参数一起传递给 merge() 函数加入。以下是代码。
import pandas as pd
dic1 = {"Name": ["John","Mark","Nancy","Sita","Ram"],
"Age": [20,40,78,90,38],
"Language" : ["Python","Java","C","Python","Salesforce"]}
dic2 = {"Name": ["John","Mark","Nancy","Sita","Ram"],
"Age": [20,40,78,90,38],
"class" : [10,9,12,9,5]}
data1 = pd.DataFrame(dic1)
print(data1)
data2 = pd.DataFrame(dic2)
print(data2)
inner_join = pd.merge(data1,data2,how = "inner")
inner_join.head()
输出
Name Age Language
0 John 20 Python
1 Mark 40 Java
2 Nancy 78 C
3 Sita 90 Python
4 Ram 38 Salesforce
Name Age class
0 John 20 10
1 Mark 40 9
2 Nancy 78 12
3 Sita 90 9
4 Ram 38 5
外连接
外连接将返回两个数据框的所有行,如果行中有任何缺失数据,则填充空值。以下语法用于在数据框上应用外连接。
import pandas as pd pd.merge(dataframe1,dataframe2,how=’outer’
示例
import pandas as pd
dic1 = {"Name": ["John","Mark","Nancy","Sita","Ram"],
"Age": [20,40,78,90,38],
"Language" : ["Python","Java","C","Python","Salesforce"]}
dic2 = {"Name": ["John","Nancy","Sita","Ram"],
"Age": [20,40,70,38],
"class" : [10,12,9,5]}
data1 = pd.DataFrame(dic1)
print(data1)
data2 = pd.DataFrame(dic2)
print(data2)
inner_join = pd.merge(data1,data2,how = "outer")
inner_join.head()
输出
Name Age Language
0 John 20 Python
1 Mark 40 Java
2 Nancy 78 C
3 Sita 90 Python
4 Ram 38 Salesforce
Name Age class
0 John 20 10
1 Nancy 40 12
2 Sita 70 9
3 Ram 38 5
左连接
左连接返回左数据框的所有行和右数据框的所有匹配行。如果右数据框中没有匹配的行,则输出数据框将用相应列中的空值填充。以下是应用左连接的语法。
import pandas as pd pd.merge(dataframe1,dataframe2,how='left'
示例
在此示例中,我们将对两个输入数据框应用左连接,然后返回左连接的输出。
import pandas as pd
dic1 = {"Name": ["John","Mark","Nancy","Sita","Ram"],
"Age": [2,40,78,90,38],
"Language" : ["Python","Java","C","Python","Salesforce"]}
dic2 = {"Name": ["John","Nancy","Sita","Ram"],
"Age": [20,40,70,38],
"class" : [10,12,9,5]}
data1 = pd.DataFrame(dic1)
print(data1)
data2 = pd.DataFrame(dic2)
print(data2)
inner_join = pd.merge(data1,data2,how = "left")
inner_join.head()
输出
Name Age Language
0 John 2 Python
1 Mark 40 Java
2 Nancy 78 C
3 Sita 90 Python
4 Ram 38 Salesforce
Name Age class
0 John 20 10
1 Nancy 40 12
2 Sita 70 9
3 Ram 38 5
右连接
右连接返回右侧数据框的所有行和左侧数据框的所有匹配行。如果左侧数据框中没有匹配的行,则输出数据框将用相应列中的空值填充。以下是应用右连接的语法。
import pandas as pd pd.merge(dataframe1,dataframe2,how='right'
示例
在此示例中,我们将对两个输入数据框应用右连接,然后返回右连接的输出。
import pandas as pd
dic1 = {"Name": ["John","Mark","Nancy","Sita","Ram"],
"Age": [2,40,78,90,38],
"Language" : ["Python","Java","C","Python","Salesforce"]}
dic2 = {"Name": ["John","Nancy","Sita","Ram"],
"Age": [20,40,70,38],
"class" : [10,12,9,5]}
data1 = pd.DataFrame(dic1)
print(data1)
data2 = pd.DataFrame(dic2)
print(data2)
inner_join = pd.merge(data1,data2,how = "right")
inner_join.head()
输出
Name Age Language
0 John 2 Python
1 Mark 40 Java
2 Nancy 78 C
3 Sita 90 Python
4 Ram 38 Salesforce
Name Age class
0 John 20 10
1 Nancy 40 12
2 Sita 70 9
3 Ram 38 5
交叉连接
交叉连接返回两个数据框的笛卡尔积;这意味着它返回两个数据框中行的所有可能组合。

