本文主要讲解的是如何利用pandas来实现SQL中的group_concat操作。

group_concat

SQL或者MySQL中的group_concat到底实现的什么功能呢?看例子来说明。

下面是表information中存储的一份简单数据,两个字段id和name:

+----+-----+
| id | name |
+------+---+
|1  | 10   |
|1  | 20   |
|1  | 20   |
|2  | 20   |
|3  | 200  |
|3  | 500  |

方式1:默认情形

我们以id来进行分组,将name放在同一行,同时用逗号隔开:

select id,group_concat(name)  as name
from information
group by id;

结果为:

|id|  name|
|1 |10,20,20|
|2 |20      |
|3 |200,500|

方式2:指定符号

上面的结果中默认是逗号(英文逗号)隔开的,我们还可以自己指定符号:

select id,group_concat(name separator ';')  as name
from information
group by id;

结果则显示为:

|id|  name|
|1 |10;20;20|   -- 分号隔开
|2 |20      |
|3 |200;500|

方式3:去重显示

我们还可以以id分组,将冗余(重复的)的数据去掉,然后将剩下的放在一起;比如id=1的数据重复了20,我们希望只显示一个20:

加上了关键词distinct :

select id,group_concat(distinct name)  as name
from information
group by id;

相应的结果显示为:

|id|  name|
|1 |10,20|   -- 只显示了一个20
|2 |20    |
|3 |200,500|

方式4:降序排列

在上面的全部情形中,数据都是升序排列,我们还可以降序:

select id,group_concat(name order by name desc)  as name
from information
group by id;

那么显示的结果为:

-- 结果已经降序排列了|id|  name|
|1 |20,20,10|
|2 |20    |
|3 |500,200|

上面介绍的就是各种group_concat实现的效果,下面利用pandas来实现。

模拟数据

import pandas as pd
import numpy as np
df = pd.DataFrame({"name":["小明","小明","小明","小红","小张","小张"],"score":[10,20,20,20,200,500]
})df

很清楚,我们需要将小明、小红、小张的score分组放在一起。

方式1:默认分组

实现默认分组情形,升序排列且不去重。主要是3个步骤:

1、通过groupby进行分组

2、分组之后通过list将score全部放在一个列表中

3、第三步只是进行了索引重排

方式2:指定符号

指定特定的符号,我们使用的join函数。因为这个函数只能操作字符串,所以我们需要将df中的数值型数据转成字符串:

df.astype(str)

方式3:去重显示

通过name字段进行分组,再对score采用unique函数。下面只是进行所以重排

方式4:降序排列

1、我们先实现默认的升序排列

2、对score字段再次使用apply函数,通过对列表使用sorted函数来实现降序排列

亲爱的朋友,学会了吗?

对比SQL,学习Pandas操作:group_concat如何实现?相关推荐

  1. 【Python】14种方式,34个案例:对比SQL,学习Pandas操作

    公众号:尤而小屋 作者:Peter 编辑:Peter 本文主题:对比SQL,学习Pandas操作! 在SQL中查询数据的时候我们所有各种操作,主要是通过select.where.group by等多个 ...

  2. 14种方式,34个案例:对比SQL,学习Pandas操作

    在SQL中查询数据的时候我们所有各种操作,主要是通过select.where.group by等多个关键词的组合查询来实现的.本文中介绍的如何在相同的需求下,通过pandas来实现取数操作. 比较方向 ...

  3. 对比SQL学习power bi--(2)表关联顺序!

    数据说明: 有以下表: 库龄表 出入库表 日期表 背景--数据处理逻辑:日期表的数据提取来自库龄表,但是库龄表的日期每周更新一次,比如一周的日期是2022/2/1~2022/2/7日,而库龄表就只会有 ...

  4. pandas使用to_sql方法将dataframe注册为数据库表进行数据整合和数据清洗并不对比SQL操作和dataframe操作

    pandas使用to_sql方法将dataframe注册为数据库表进行数据整合和数据清洗并不对比SQL操作和dataframe操作 SQLite 是一个软件库,实现了自给自足的.无服务器的.零配置的. ...

  5. pandas 按字符串肚脐眼 读取数据_十分钟学习pandas! pandas常用操作总结!

    学习Python, 当然少不了pandas,pandas是python数据科学中的必备工具,熟练使用pandas是从sql boy/girl 跨越到一名优秀的数据分析师傅的必备技能. 这篇pandas ...

  6. 安装命令:pip install xlrd ,pandas操作Excel学习笔记__7000

    pandas操作Excel学习笔记_loc和iloc_7000 pandas操作Excel学习笔记__7000 1.安装环境:pandas需要处理Excel的模块xlrd,所以需要提前安装xlrd.不 ...

  7. 对比python字符串函数,学习pandas的str矢量化字符串函数

    1.概述 python字符串应该是python里面最重要的数据类型了,因此学会怎么处理各种各样的字符串,显得尤为重要. 我们不仅要学会怎么处理单个字符串,这个就需要学习"python字符串函 ...

  8. SQL学习(3)——表的复杂查询与函数操作

    SQL学习(3)--表的复杂查询 1.视图 1.1.创建视图 1.1.1.基于单表的视图 1.1.2.基于多表的视图 1.2.查询视图 1.3.修改视图 1.4.更新视图 1.5.删除视图 2.子查询 ...

  9. SQL学习笔记——task1:数据库安装及基本语法操作

    文章目录 前言 一.MySQL 8.0的下载与安装 1.1Windows下MySQL8.0的下载安装 二.数据库知识点 2.1初始数据库 2.2 初始SQL 3.数据库的创建 前言 一.MySQL 8 ...

最新文章

  1. iOS在label中显示表情
  2. 鸢尾花识别问题,萼片有什么用?
  3. Docker中宿主机与容器之间互传文件(docker cp的方式)
  4. matlab调用kmeans_matlab做聚类分析(k-means)
  5. FindBugs和JSR-305
  6. linux内核启用64位除法,关于内核中的乘法和除法。
  7. el表达式的转义字符。
  8. 转:Dilphi基础教程
  9. 永磁同步电机的直接转矩控制(二)一一一传统DTC仿真结果分析
  10. gulp-sass 使用报错Error:gulp-sass no longer has a default Sass compiler; please set one yourself
  11. 计算机组成原理74138译码器连接,74138(74138译码器工作原理)
  12. 51单片机汇编学习例程(6)——74HC573数码管篇
  13. 05_grep-搜索
  14. docker file详细介绍
  15. pointnet-补充材料阅读
  16. java 163邮箱发邮件_java用163邮箱发邮件的方式,步骤有哪些?
  17. 2022最全的BAT大厂面试题整理及分析
  18. 【小白装系统】——硬盘分区表格式GUID和MBR知识普及
  19. 串行通信协议(I2C、SPI、UART、SCCB、CAN)
  20. 【CAD案例】通过.scr脚本实现图纸集视口对齐

热门文章

  1. 用c语言编译二叉树,C语言实现二叉树的基本操作
  2. 给其他账户访问mysql的权限,将postgresql数据库的权限授予其他用户
  3. 常用的正则表达式的运用--学习笔记(二)
  4. ocelot简单入门
  5. touch事件总结,监听屏幕点击事件
  6. javascript-操作符
  7. 仿简书、淘宝等等App的View弹出效果
  8. Android下的Junit测试
  9. openstack安装rabbitmq-server消息队列时出现错误
  10. squid代理服务器详解