|
在 Pandas 中,可以使用 merge 函数实现类似 SQL 中的 LEFT JOIN 操作。merge 是 Pandas 中用于合并两个 DataFrame 的核心函数,支持多种连接方式(如 left、right、inner、outer 等)。
实现 SQL LEFT JOIN 的代码
示例数据
python
复制
import pandas as pd
# 创建两个示例 DataFrame
df1 = pd.DataFrame({
"id": [1, 2, 3, 4],
"name": ["Alice", "Bob", "Charlie", "David"]
})
df2 = pd.DataFrame({
"id": [2, 3, 4, 5],
"age": [25, 30, 35, 40]
})
print("df1:")
print(df1)
print("\ndf2:")
print(df2)
输出:
复制
df1:
id name
0 1 Alice
1 2 Bob
2 3 Charlie
3 4 David
df2:
id age
0 2 25
1 3 30
2 4 35
3 5 40
使用 merge 实现 LEFT JOIN
python
复制
# 实现 LEFT JOIN
result = pd.merge(df1, df2, on="id", how="left")
print("LEFT JOIN 结果:")
print(result)
输出:
复制
LEFT JOIN 结果:
id name age
0 1 Alice NaN
1 2 Bob 25.0
2 3 Charlie 30.0
3 4 David 35.0
参数说明
on: 指定连接的列名(两个 DataFrame 共有的列)。
how: 指定连接方式,left 表示左连接。
left_on 和 right_on: 如果两个 DataFrame 的连接列名不同,可以分别指定。
suffixes: 如果两个 DataFrame 有相同的列名,可以指定后缀来区分。
其他连接方式
1. INNER JOIN
python
复制
result = pd.merge(df1, df2, on="id", how="inner")
print(result)
输出:
复制
id name age
0 2 Bob 25
1 3 Charlie 30
2 4 David 35
2. RIGHT JOIN
python
复制
result = pd.merge(df1, df2, on="id", how="right")
print(result)
输出:
复制
id name age
0 2 Bob 25
1 3 Charlie 30
2 4 David 35
3 5 NaN 40
3. FULL OUTER JOIN
python
复制
result = pd.merge(df1, df2, on="id", how="outer")
print(result)
输出:
复制
id name age
0 1 Alice NaN
1 2 Bob 25.0
2 3 Charlie 30.0
3 4 David 35.0
4 5 NaN 40.0
多列连接
如果连接条件涉及多个列,可以将列名以列表形式传递给 on 参数:
python
复制
result = pd.merge(df1, df2, on=["id", "other_column"], how="left")
处理列名冲突
如果两个 DataFrame 有相同的列名,可以使用 suffixes 参数添加后缀:
python
复制
result = pd.merge(df1, df2, on="id", how="left", suffixes=("_left", "_right"))
总结
使用 pd.merge 可以实现类似 SQL 的连接操作。
how="left" 对应 SQL 的 LEFT JOIN。
通过 on 参数指定连接列,支持多列连接。
使用 suffixes 处理列名冲突。
通过灵活使用 merge,可以轻松实现复杂的 DataFrame 合并操作!
|