栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

itertools.groupby与pandas.groupby的异同

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

itertools.groupby与pandas.groupby的异同

背景

最近遇到一个bug,是在老代码中,多年用下来都没事,但是新增业务需求就遇到问题了。经过排除,发现是由于itertools.groupby的用法与想象中不一样,至少与我熟知的pandas.groupby不太一样。在网上没看到相关的比较,于是自己写一个异同对比。

itertools.groupby与pandas.groupby的相同点
# itertools.groupby
from itertools import groupby
a = groupby([1,1,2,3])
for i,j in a:
    print(i,'  ',len(list(j)))

# pandas.groupby
import pandas 
b = pandas.Series([0,1,2,3],index=[1,1,2,3],name='b').groupby(level=0,)
b.apply(lambda x:len(x))

能看出两者都是基于一定规则的分组,但是当数据有序时,两者的分组结果是相近的。

itertools.groupby与pandas.groupby的不同点
# itertools.groupby
from itertools import groupby
a = groupby([1,2,3,1])
for i,j in a:
    print(i,'  ',len(list(j)))

# pandas.groupby
import pandas 
b = pandas.Series([0,1,2,3],index=[1,2,3,1],name='b').groupby(level=0,)
b.apply(lambda x:len(x))

能看出,当数据无序时,两者的分组结果不同。
pandas.groupby的结果与之前并无差异。但itertools.groupby的分组结果更像是相邻数据去重后再分组的结果,同样的值,如果被其他值分割的话,分组结果完全不一样。

总结

当数据无序时,准确来说是相同值的数据不相邻时,itertools.groupby可能会产生意料之外的结果,

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983579.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号