Pandas 中不同类型的连接
Pandas 是一个流行的库,用于执行数据分析和数据操作。它有许多高级功能可以处理表格数据,例如根据公共列或列索引将多个数据框连接成一个。
在 Python 中,可以使用 **merge()** 函数以及 pandas 库的 how 参数执行不同类型的连接。以下是不同的连接类型。
内连接 (Inner Join)
外连接 (Outer Join)
左连接 (Left Join)
右连接 (Right Join)
交叉连接 (Cross Join)
内连接 (Inner Join)
Pandas 库中的内连接将返回在两个已定义数据框中具有相同值的行以及输出结果。我们可以观察到数据框中具有相同列的列。以下是应用于数据框的内连接语法。
import pandas as pd pd.merge(dataframe1,dataframe2,how=’inner’
其中:
**pandas** 是库的名称。
**pd** 是别名。
**merge** 是执行连接操作的函数。
**how** 指定连接操作的类型。
示例
在这个示例中,我们将两个数据框以及 '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
外连接 (Outer Join)
外连接将返回两个数据框的所有行,如果行中存在任何缺失数据,则它将填充空值。以下是应用于数据框的外连接语法。
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
左连接 (Left Join)
左连接返回左数据框的全部行以及右数据框的所有匹配行。如果右数据框中没有匹配行,则输出数据框将在相应的列中填充空值。以下是应用左连接的语法。
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
右连接 (Right Join)
右连接返回右数据框的全部行以及左数据框的所有匹配行。如果左数据框中没有匹配行,则输出数据框将在相应的列中填充空值。以下是应用右连接的语法。
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
交叉连接 (Cross Join)
交叉连接返回两个数据框的笛卡尔积;这意味着它返回两个数据框中所有行的所有可能组合。
广告