全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
915 3
2023-12-14
  • concat 只是 pandas 下的方法,而 merge 即是 pandas 下的方法,又是DataFrame 下的方法
      语法上,
      只能pd.concat([df1,df2,...],...)
      而merge可以pd.merge(df1,df2),又可以df1.merge(df2,...)

  • concat 可以横向、纵向拼接,又起到关联的作用,通过参数axis=0 or 1指定
  • merge 只能进行关联,也就是纵向拼接
  • concat 可以同时处理多个数据框DataFrame,而 merge 只能同时处理 2 个数据框

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2023-12-15 09:12:50
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-12-15 09:13:01
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2025-3-17 23:41:03
在 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 合并操作!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群