Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用日期时间索引会减缓groupby在熊猫中的应用?_Python_Performance_Pandas_Numpy - Fatal编程技术网

Python 使用日期时间索引会减缓groupby在熊猫中的应用?

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

我有一个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']).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')