Python 使用日期时间索引会减缓groupby在熊猫中的应用?
我有一个Pandas数据框,其结构如下,大约有1亿行:Python 使用日期时间索引会减缓groupby在熊猫中的应用?,python,performance,pandas,numpy,Python,Performance,Pandas,Numpy,我有一个Pandas数据框,其结构如下,大约有1亿行: Date Value ID '1/1/17' 500 1 '1/2/17' 550 1 '1/4/17' 600 2 如果我这样做: def get_coeff_var(group): group['coeff_var'] = group['Value'].std()/group['Value'].mean() return group df = df.groupby(['ID']).appl
Date Value ID
'1/1/17' 500 1
'1/2/17' 550 1
'1/4/17' 600 2
如果我这样做:
def get_coeff_var(group):
group['coeff_var'] = group['Value'].std()/group['Value'].mean()
return group
df = df.groupby(['ID']).apply(lambda x: get_coeff_var(x))
它完成得非常快
但是,如果我首先将索引设置为日期并获取最后一个月的数据,那么同样的应用函数需要花费大量的时间,即我甚至不能等待它完成时间:
df = df.set_index('Date')
df = df.last('1M')
df = df.groupby(['ID']).apply(lambda x: get_coeff_var(x))
发生了什么事?几乎总是,在groupby应用程序中进行变异是一个坏主意-一般来说,这需要一个缓慢的过程,尽管我不确定确切的问题是什么 在您的例子中,执行此转换的惯用且快得多的方法如下所示,并且无论您的索引如何,都应该是快速的
gb = df.groupby('ID')['Value']
df['coeff_var'] = gb.transform('std') / gb.transform('mean')