Pandas 中的不同类型的连接
pandasserver side programmingprogramming更新于 2024/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
交叉连接
交叉连接返回两个数据框的笛卡尔积;这意味着它返回两个数据框中行的所有可能组合。