📜  Pandas 中不同类型的连接(1)

📅  最后修改于: 2023-12-03 15:33:24.007000             🧑  作者: Mango

Pandas 中不同类型的连接

Pandas是一种基于NumPy的开源数据分析工具。它可以处理不同类型的数据,并拥有更高层次的灵活性。在进行数据合并时,Pandas提供了不同类型的连接。

1. Inner Join

Inner Join也称为Inner Merge,是一种返回两个数据集中交集的连接方式。使用pd.merge函数进行连接时,选择how参数为'inner'即可使用该连接方式。

示例代码:

import pandas as pd

df1 = pd.DataFrame({'Name':['Alice', 'Bob', 'Charlie', 'David'],
                    'Age':[25, 30, 35, 35],
                    'City':['New York', 'Las Vegas', 'Los Angeles', 'Las Vegas']})

df2 = pd.DataFrame({'Name':['Bob', 'David', 'Edward', 'Fred'],
                    'Gender':['Male', 'Male', 'Male', 'Male']})

df3 = pd.merge(df1, df2, on='Name', how='inner')
print(df3)

以上代码中,df1中包含Name, Age和City列,df2中包含Name和Gender列。使用pd.merge函数将df1和df2连接时,指定how参数为'inner',连接基准是Name列,连接结果仅含df1和df2中的Name列交集,即Bob和David。

输出结果:

     Name  Age       City Gender
0     Bob   30  Las Vegas   Male
1   David   35  Las Vegas   Male
2. Left Join

Left Join也称为Left Outer Join,是一种返回左边数据集所有行,并将右边数据集中匹配到的行合并的连接方式。使用pd.merge函数进行连接时,选择how参数为'left'即可使用该连接方式。

示例代码:

import pandas as pd

df1 = pd.DataFrame({'Name':['Alice', 'Bob', 'Charlie', 'David'],
                    'Age':[25, 30, 35, 35],
                    'City':['New York', 'Las Vegas', 'Los Angeles', 'Las Vegas']})

df2 = pd.DataFrame({'Name':['Bob', 'David', 'Edward', 'Fred'],
                    'Gender':['Male', 'Male', 'Male', 'Male']})

df3 = pd.merge(df1, df2, on='Name', how='left')
print(df3)

以上代码中,df1中包含Name, Age和City列,df2中包含Name和Gender列。使用pd.merge函数将df1和df2连接时,指定how参数为'left',连接基准是Name列,除了连接结果中含有内连接的两个行(Bob和David)外,还将df1中的Charlie和Edward合并,同时在Gender列中对应的值留空值。

输出结果:

      Name  Age          City Gender
0    Alice   25      New York    NaN
1      Bob   30     Las Vegas   Male
2  Charlie   35   Los Angeles    NaN
3    David   35     Las Vegas   Male
3. Right Join

Right Join也称为Right Outer Join,是一种返回右边数据集所有行,并将左边数据集中匹配到的行合并的连接方式。使用pd.merge函数进行连接时,选择how参数为'right'即可使用该连接方式。

示例代码:

import pandas as pd

df1 = pd.DataFrame({'Name':['Alice', 'Bob', 'Charlie', 'David'],
                    'Age':[25, 30, 35, 35],
                    'City':['New York', 'Las Vegas', 'Los Angeles', 'Las Vegas']})

df2 = pd.DataFrame({'Name':['Bob', 'David', 'Edward', 'Fred'],
                    'Gender':['Male', 'Male', 'Male', 'Male']})

df3 = pd.merge(df1, df2, on='Name', how='right')
print(df3)

以上代码中,df1中包含Name, Age和City列,df2中包含Name和Gender列。使用pd.merge函数将df1和df2连接时,指定how参数为'right',连接基准是Name列,除了连接结果中含有内连接的两个行(Bob和David)外,还将df2中的Edward和Fred合并,同时在df1中对应的值留空值。

输出结果:

     Name   Age       City Gender
0     Bob  30.0  Las Vegas   Male
1   David  35.0  Las Vegas   Male
2  Edward   NaN        NaN   Male
3    Fred   NaN        NaN   Male
4. Outer Join

Outer Join也称为Full Outer Join,是一种返回两个数据集中并集的连接方式。使用pd.merge函数进行连接时,选择how参数为'outer'即可使用该连接方式。

示例代码:

import pandas as pd

df1 = pd.DataFrame({'Name':['Alice', 'Bob', 'Charlie', 'David'],
                    'Age':[25, 30, 35, 35],
                    'City':['New York', 'Las Vegas', 'Los Angeles', 'Las Vegas']})

df2 = pd.DataFrame({'Name':['Bob', 'David', 'Edward', 'Fred'],
                    'Gender':['Male', 'Male', 'Male', 'Male']})

df3 = pd.merge(df1, df2, on='Name', how='outer')
print(df3)

以上代码中,df1中包含Name, Age和City列,df2中包含Name和Gender列。使用pd.merge函数将df1和df2连接时,指定how参数为'outer',连接基准是Name列,连接结果含有df1和df2中的所有行,当Name列含有交集时,合并对应的行,当某一数据集中找不到对应Name时,对应行的值留空值。

输出结果:

      Name   Age          City Gender
0    Alice  25.0      New York    NaN
1      Bob  30.0     Las Vegas   Male
2  Charlie  35.0   Los Angeles    NaN
3    David  35.0     Las Vegas   Male
4   Edward   NaN           NaN   Male
5     Fred   NaN           NaN   Male