楼主: shadowaver
914 3

[程序分享] python的concat与merge函数的区别 [推广有奖]

随心所欲不逾矩

已卖:1243份资源

教授

56%

还不是VIP/贵宾

-

威望
0
论坛币
8309 个
通用积分
689.8825
学术水平
18 点
热心指数
22 点
信用等级
13 点
经验
29709 点
帖子
890
精华
0
在线时间
1375 小时
注册时间
2007-9-27
最后登录
2026-1-21

楼主
shadowaver 在职认证  发表于 2023-12-14 15:58:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  • 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 个数据框

二维码

扫码加我 拉你入群

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

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

关键词:merge函数 python Merge CAT con

shadowaver@163.com
QQ 540722048

沙发
HappyAndy_Lo 发表于 2023-12-15 09:12:50

藤椅
albertwishedu 发表于 2023-12-15 09:13:01

板凳
shadowaver 在职认证  发表于 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 合并操作!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-21 18:13