SQL to Pandas 速查表(二)

栏目: 数据库 · 发布时间: 7年前

内容简介:此文为 SQL to Pandas 系列第二篇可先阅读

SQL to Pandas 速查表(二)

介绍

此文为 SQL to Pandas 系列第二篇

可先阅读

【Python】SQL to Pandas 速查表(一)

补充上篇 JOIN 内容

本篇将解构下面的 SQL 查询句式, 使用  Pandas 进行实现

SQL 查询句式

SELECT DISTINCT [字段] 
FROM [表] JOIN [bin] ON [连接条件]
WHERE [过滤条件]
GROUP BY [字段]
HAVING [条件]
ORDER BY [字段] DESC
LIMIT [个数] OFFSET [个数]

读取评论数据

df_comments = pd.read_sql(sql="select * from comments", con=conn)

数据预览

df_comments
id student_id content
0 1 1 测试评论1
1 2 5 测试评论5
2 3 2 测试评论2
3 4 3 测试评论3
4 5 1 测试评论11
5 6 9 测试评论9

JOIN

(INNER) JOIN

SQL

SELECT
*
FROM
student
INNER JOIN comments ON student.id = comments.student_id;

Pandas

pd.merge(df, df_comments, left_on='id', right_on='student_id')

LEFT (OUTER) JOIN

SQL

SELECT
*
FROM
student
LEFT JOIN comments ON student.id = comments.student_id;

Pandas

pd.merge(df, df_comments, left_on='id', right_on='student_id', how='left')

RIGHT (OUTER) JOIN

SQL

SELECT
*
FROM
student
RIGHT JOIN comments ON student.id = comments.student_id;

Pandas

pd.merge(df, df_comments, left_on='id', right_on='student_id', how='right')

UNION

SQL

SELECT * FROM student where city ='北京' 
UNION
SELECT * FROM student where sex ='男';

Pandas

pd.concat([df[df.city == '北京'], df[df.sex == '男']]).drop_duplicates().reset_index()

UNION ALL

SQL

SELECT * FROM student where city ='北京' 
UNION ALL
SELECT * FROM student where sex ='男';

Pandas

pd.concat([df[df.city == '北京'], df[df.sex == '男']]).reset_index()

本篇内容

本篇将解构下面的 SQL 查询句式, 使用  Pandas 进行实现

SQL 创建句式

CREATE TABLE [表名] (
[列名] [类型],
[列名] [类型],
....
);

SQL 插入句式

INSERT INTO [表名] VALUES ([值], [值], ...);
INSERT INTO [表名] ([列名],[列名] ...) VALUES ([值], [值], ...);

SQL 更新句式

UPDATE [表名]
SET [列名] = [值], [列名] = [值]
WHERE [过滤条件];

SQL 删除句式

DELETE FROM [表名] WHERE [过滤条件];

CREATE

SQL

CREATE TABLE student (
id INT ( 11 ) NOT NULL AUTO_INCREMENT,
name VARCHAR ( 10 ) COLLATE utf8mb4_general_ci DEFAULT NULL,
age date DEFAULT NULL,
sex VARCHAR ( 10 ) COLLATE utf8mb4_general_ci DEFAULT NULL,
city VARCHAR ( 255 ) CHARACTER
SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
money DOUBLE ( 255, 2 ) DEFAULT NULL,

);

Pandas

pd.DataFrame(columns=['id', 'name', 'sex', 'city', 'money'])

INSERT

SQL

INSERT INTO student (id, name, age, sex, city, money )
VALUES
(1, '张三', '2017-12-20', '女', '天津', 20.00 );

Pandas

# 第一种
df.loc[-1] = [1, '张三', '女', '天津', 20.00]
df.index = df.index + 1
df = df.sort_index()

# 第二种
temp_pd = pd.DataFrame({'id': [1], 'name': ['张三'], 'sex': ['女'], 'city': ['天津'], 'money': [20.00]})
df = pd.concat([df,temp_pd], ignore_index=True)
df.reset_index()

# 第三种
temp_pd = pd.DataFrame([[1,'张三1', '女', '天津', 20.00]], columns=df.columns)
df = pd.concat([df, temp_pd])
df.reset_index()

UPDATE

SQL

UPDATE student SET money = 300 WHERE id = 1;

Pandas

df.loc[df.id == 1, 'money'] = 300

DELETE

SQL

-- 测试时会因外键报错,此处忽略,仅讨论句法
DELETE FROM student WHERE id = 1;

Pandas

df = df.loc[df.id != 1]

本系列文章

【Python】SQL to Pandas 速查表(一)

SQL to Pandas 速查表(二)

SQL to Pandas 速查表(二)

SQL to Pandas 速查表(二)

听说好看的人才能点


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

零售的哲学:7-Eleven便利店创始人自述

零售的哲学:7-Eleven便利店创始人自述

[日] 铃木敏文 / 顾晓琳 / 江苏文艺出版社 / 2014-12-1 / 36

全球最大的便利店连锁公司创始人——铃木敏文,结合40多年零售经验,为你讲述击中消费心理的零售哲学。铃木敏文的很多创新,现在已经成为商界常识,本书把那些不可思议的零售创新娓娓道来。关于零售的一切:选址、订货、销售、物流、管理……他一次又一次地在一片反对声中创造出零售界的新纪录。 翻开本书,看铃木敏文如何领导7-11冲破层层阻碍,成为世界第一的零售哲学。一起来看看 《零售的哲学:7-Eleven便利店创始人自述》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具