目录
1 merge 函数详解
1.1 左连接(Left Join):
1.2 右连接(Right Join):
1.3 全连接(Full Join 或 Outer Join):
2 代码示例
2.1 加载模块并创建示例数据框
2.2 左连接
2.3 右连接
2.4 全连接
1 merge 函数详解
merge 函数通常与pandas库关联,用于合并两个或多个DataFrame,主要有三种合并方式:左连接、右连接和全连接,三种连接方式如下:
1.1 左连接(Left Join):
a.保留左DataFrame的所有行。
b. 如果右DataFrame中有匹配的行,则合并这些行的值。
c.如果右DataFrame中没有匹配的行,则结果中的相应列将包含缺失值(NaN)。
d.在pandas中,可以使用 merge(left, right, on='key', how='left') 来实现左连接,其中 'key' 是两个DataFrame中用于匹配的列名。
1.2 右连接(Right Join):
a. 与左连接相反,右连接保留右DataFrame的所有行。
b. 如果左DataFrame中有匹配的行,则合并这些行的值。
c.如果左DataFrame中没有匹配的行,则结果中的相应列将包含缺失值(NaN)。
d.在pandas中,虽然 how='right' 是理论上存在的选项,但更常见的做法是先进行左连接,然后交换两个DataFrame的顺序再进行左连接,以达到右连接的效果。
1.3 全连接(Full Join 或 Outer Join):
a.全连接返回左DataFrame和右DataFrame中的所有行。
b.如果两个DataFrame中有匹配的行,则合并这些行的值。
c.如果没有匹配的行,则结果中的相应列将包含缺失值(NaN)。
d.在pandas中,可以使用 merge(left, right, on='key', how='outer') 来实现全连接。
2 代码示例
2.1 加载模块并创建示例数据框
首先,我们需要创建两个简单的DataFrame作为示例数据:
import pandas as pd # 创建左DataFrame
left = pd.DataFrame({ 'key': ['A', 'B', 'C', 'D'], 'value': ['left_A', 'left_B', 'left_C', 'left_D']
}) # 创建右DataFrame
right = pd.DataFrame({ 'key': ['B', 'C', 'D', 'E'], 'value': ['right_B', 'right_C', 'right_D', 'right_E']
}) # 打印原始DataFrame
print("Left DataFrame:")
print(left)
print("\nRight DataFrame:")
print(right)
2.2 左连接
# 左连接
left_join = pd.merge(left, right, on='key', how='left')
print("\nLeft Join:")
print(left_join)
2.3 右连接
pandas的merge函数没有直接的how='right'选项,但可以通过交换左右DataFrame的位置来实现右连接:
# 右连接(通过交换左右DataFrame的位置)
right_join = pd.merge(right, left, on='key', how='left')
# 注意:这里我们交换了left和right的位置,并使用了'left'作为how参数
print("\nRight Join (by swapping DataFrames and using 'left' how):")
print(right_join)
2.4 全连接
# 全连接(外连接)
full_join = pd.merge(left, right, on='key', how='outer')
print("\nFull Join (Outer Join):")
print(full_join)