网站首页 > 知识剖析 正文
最近使用Pandas做些数据处理,涉及到多个DataFrame的合并操作。但Pandas中相关的concat、merge函数不是很好理解,所以对照数据库几种常用数据集连接SQL的写法进行比较和分析。
数据集纵向连接合并
SQL中使用union和union all来合并两个或多个 select 语句的结果集。
注意:前提是这两个结果集的列数量和名称都要一致。
区别:使用 union 连接时,会对重复数据行去重;而 union all 不会去重。
一、准备对照数据
1、准备如下2个数据表:df1和df2
2、相对应的准备如下2个DataFrame:df1和df2
二、运行结果比较
--union all
select * from df1 union ALL select * from df2
--union
select * from df1 union select * from df2
df=pd.merge(df1,df2,how='outer')
# 从merge函数运行效果来看,使用outer参数,会对合并后的数据去重,与union语句对应
df=pd.concat([df1,df2])
# 从concat函数运行效果来看,合并后是2个dataframe数据的堆叠,与union all语句对应
数据集左右连接合并
SQL中有3种常用连接:inner join、left join、right join
一、准备数据
1、准备如下2个数据表:df1和df2
2、相对应的准备如下2个DataFrame:df1和df2
二、运行结果比较
--inner join
select * from df1 inner join df2 on df1.A = df2.D
--left join
select * from df1 left join df2 on df1.A = df2.D
--right join
select * from df1 right join df2 on df1.A = df2.D
#从运行结果来看,concat一般用于简单的数据堆叠
#所以主要使用merge函数来比较
df=pd.merge(df1,df2,left_on='A',right_on='D',how='inner')
# 从运行结果来看,与inner join(sql)结果一致。
将上述代码how参数值调成‘left’和‘right’,运行结果与 left join 和 right join (sql)结果一致。
根据上述运行结果,得到如下对照表:
SQL脚本 | Pandas代码 |
select * from df1 union ALL select * from df2 | df=pd.concat([df1,df2]) |
select * from df1 union select * from df2 | df=pd.merge(df1,df2,how='outer') |
select * from df1 inner join df2 on df1.A = df2.D | df=pd.merge(df1,df2,left_on='A',right_on='D',how='inner') |
select * from df1 left join df2 on df1.A = df2.D | df=pd.merge(df1,df2,left_on='A',right_on='D',how='left') |
select * from df1 right join df2 on df1.A = df2.D | df=pd.merge(df1,df2,left_on='A',right_on='D',how='right') |
- 上一篇: MySQL数据库连接查询表关系、表链接查询详解
- 下一篇: SQL其实很简单,现学现用
猜你喜欢
- 2025-05-27 SQL其实很简单,现学现用
- 2025-05-27 MySQL数据库连接查询表关系、表链接查询详解
- 2025-05-27 MySQL 中的 CROSS JOIN:强大的连接工具
- 2025-05-27 Java面试题:mysql 语句执行顺序
- 2025-05-27 SQL执行顺序(SqlServer)
- 2025-05-27 MySQL--多表连接查询
- 2025-05-27 SQL语句执行顺序及实际案例
- 2025-05-27 SQL表连接就是这么简单!
- 2025-05-27 《阿常·MySQL 70讲》全套教学视频
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)