在Pandas中,可以使用merge()函数来实现类似于SQL中的连接操作。以下是四种基本的连接类型:左连接(left join)、右连接(right join)、内连接(inner join)和外连接(outer join)的表格示例解释。
假设我们有两个DataFrame:df1 和 df2。
1 2 3 4 5 6 7 8 9 10 11 12 |
import pandas as pd
# 创建示例DataFrame df1 = pd.DataFrame({ 'key': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4] })
df2 = pd.DataFrame({ 'key': ['B', 'D', 'E', 'F'], 'value2': [5, 6, 7, 8] }) |
左连接返回左DataFrame(df1)的所有行,即使右DataFrame(df2)中没有匹配的行。如果右DataFrame中有匹配的行,则返回匹配的值,否则返回NaN。
1 2 |
result_left = pd.merge(df1, df2, on='key', how='left') print(result_left) |
输出结果:
key value1 value2
0 A 1 NaN
1 B 2 5.0
2 C 3 NaN
3 D 4 6.0
右连接返回右DataFrame(df2)的所有行,即使左DataFrame(df1)中没有匹配的行。如果左DataFrame中有匹配的行,则返回匹配的值,否则返回NaN。
1 2 |
result_right = pd.merge(df1, df2, on='key', how='right') print(result_right) |
输出结果:
key value1 value2
0 B 2 5.0
1 D 4 6.0
2 E NaN 7.0
3 F NaN 8.0
内连接返回两个DataFrame中共有的匹配行。只有当两个DataFrame中都有匹配的行时,才会返回结果。
1 2 |
result_inner = pd.merge(df1, df2, on='key', how='inner') print(result_inner) |
输出结果:
key value1 value2
0 B 2 5.0
1 D 4 6.0
外连接返回两个DataFrame中的所有行。如果某一侧没有匹配的行,则该侧的值将被设置为NaN。
1 2 |
result_outer = pd.merge(df1, df2, on='key', how='outer') print(result_outer) |
输出结果:
key value1 value2
0 A 1 NaN
1 B 2 5.0
2 C 3 NaN
3 D 4 6.0
4 E NaN 7.0
5 F NaN 8.0