广告区

广告区


本站消息

站长简介/公众号

关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

将函数应用于熊猫中的唯一值以提高效率

发布于2022-06-25 19:28     阅读(1024)     评论(0)     点赞(23)     收藏(3)



这是关于如何在 pandas 中有效地应用函数的一般问题。我经常遇到需要将函数应用于 a 的情况,pd.Series并且将函数仅应用于唯一值会更快。

例如,假设我有一个非常大的数据集。一列是date,我想添加一列,给出季度的最后日期date我会这样做:

mf['qtr'] = pd.Index(mf['date']) + pd.offsets.QuarterEnd(0)

但对于大型数据集,这可能需要一段时间。因此,为了加快速度,我将提取 的唯一值date,将函数应用于这些值,然后将其合并回原始数据:

dts = mf['date'].drop_duplicates()
eom = Series(pd.Index(dts) + pd.offsets.QuarterEnd(0), index=dts)
eom.name = 'qtr'
mf = pd.merge(mf, eom.reset_index())

这可能比上面的单线快得多。

所以这是我的问题:这真的是做这样的事情的正确方法,还是有更好的方法?

而且,向 pandas 添加一个自动采用这种独特/应用/合并方法的功能是否有意义且可行?(它不适用于某些功能,例如那些依赖滚动数据的功能,因此用户可能必须明确请求此行为。)


解决方案


我个人只是在日期列上分组,然后为每个组调用你的函数:

mf.groupby('date',as_index=False)['date'].apply(lambda x: x + pd.offsets.QuarterEnd(0))

我认为应该工作

编辑

好的,上面的不起作用,但下面的起作用,但我认为这有点扭曲:

mf.groupby('date', as_index=False)['date'].apply(lambda x: (pd.Index(x)+ QuarterEnd(0))[0])

我们为每个日期创建一个 datetimeindex,添加偏移量,然后访问单个元素以返回值,但我个人认为这不是很好。







所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1607337/d57aa8875fb2d78326fd/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

23 0
收藏该文
已收藏

评论内容:(最多支持255个字符)