Python学习笔记:SQL中group_concat分组合并操作实现
一、背景
如何利用 Pandas
实现 SQL
中的 group_concat
操作?
二、实操
1.构造测试数据集
import pandas as pd
import numpy as np
df = pd.DataFrame({
'name':['小明','小明','小明','小红','小三','小三'],
'value':[10,20,20,20,200,500]})
df
'''
name value
0 小明 10
1 小明 20
2 小明 20
3 小红 20
4 小三 200
5 小三 500
'''
2.默认分组合并
- groupby 实现分组
- 匿名函数实现转换为列表
- reset_index 实现索引重置
# NOT WORK
df.groupby("name").agg({"value":list})
# TypeError: 'type' object is not iterable
# 修改
df.groupby("name").agg({"value": lambda x: x.tolist()}).reset_index()
'''
name value
0 小三 [200, 500]
1 小明 [10, 20, 20]
2 小红 [20]
'''
3.指定符号
利用 join
函数实现字符串连接。
df.astype(str).groupby("name").apply(lambda x: ';'.join(x.value))
'''
name
小三 200;500
小明 10;20;20
小红 20
dtype: object
'''
# 还可以换行、转换成数据框
(df.astype(str)
.groupby("name")
.apply(lambda x: ';'.join(x.value))
.to_frame("value")
.reset_index()
)
'''
name value
0 小三 200;500
1 小明 10;20;20
2 小红 20
'''
4.去重显示
df.groupby("name").agg({'value':'unique'}).reset_index()
'''
name value
0 小三 [200, 500]
1 小明 [10, 20]
2 小红 [20]
'''
5.降序排列
(df.groupby("name")
.agg({"value": lambda x: x.tolist()})["value"]
.apply(lambda x: sorted(x, reverse=True))
.reset_index()
)
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)