Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x timedelta方法的缓慢性能_Python 3.x_Pandas - Fatal编程技术网

Python 3.x timedelta方法的缓慢性能

Python 3.x timedelta方法的缓慢性能,python-3.x,pandas,Python 3.x,Pandas,为什么.dt.days比.dt.total_seconds()长100倍 .dt.total_seconds基本上只是一个乘法,可以以numpythonic速度执行: def total_seconds(self): """ Total duration of each element expressed in seconds. .. versionadded:: 0.17.0 """ return self._maybe_mask_results(1e

为什么
.dt.days
.dt.total_seconds()长100倍


.dt.total_seconds
基本上只是一个乘法,可以以numpythonic速度执行:

def total_seconds(self):
    """
    Total duration of each element expressed in seconds.

    .. versionadded:: 0.17.0
    """
    return self._maybe_mask_results(1e-9 * self.asi8)
然而,如果我们中止
days
操作,我们会看到它将时间花在一个带有getattr和Timedelta对象()构造的缓慢的listcomp中:


对我来说,这尖叫着“看,让我们把它纠正过来,当我们开始时,我们将跨越优化的桥梁。”

一个更快的选择是
days=pd.Series(df['A'].dt.values.astype('timedelta64[D]'))
这些没有太多性能基准-欢迎打开一个问题(公关更好!);这些都很容易优化
def total_seconds(self):
    """
    Total duration of each element expressed in seconds.

    .. versionadded:: 0.17.0
    """
    return self._maybe_mask_results(1e-9 * self.asi8)
    360         else:
    361             result = np.array([getattr(Timedelta(val), m)
--> 362                                for val in values], dtype='int64')
    363         return result
    364