gpt4 book ai didi

pandas - 将函数应用于 Pandas 效率的唯一值

转载 作者:行者123 更新时间:2023-12-03 20:20:24 25 4
gpt4 key购买 nike

这是一个关于如何在 Pandas 中有效应用函数的一般问题。我经常遇到需要将函数应用于 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,添加偏移量,然后访问单个元素以返回值,但我个人认为这不是很好。

关于pandas - 将函数应用于 Pandas 效率的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31306787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com