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

交叉连接

交叉连接返回两个数据框的笛卡尔积;这意味着它返回两个数据框中行的所有可能组合。


相关文章