使用pandas v1.1.0。
在 pandas 文档中有一个关于如何使用 numba 来加速rolling.apply()操作的很好的例子
import pandas as pd
import numpy as np
def mad(x):
return np.fabs(x - x.mean()).mean()
df = pd.DataFrame({"A": np.random.randn(100_000)},
index=pd.date_range('1/1/2000', periods=100_000, freq='T')
).cumsum()
df.rolling(10).apply(mad, engine="numba", raw=True)
Run Code Online (Sandbox Code Playgroud)
我想将其调整为适用于 groupby 操作:
df['day'] = df.index.day
df.groupby('day').agg(mad)
Run Code Online (Sandbox Code Playgroud)
工作正常。
但
df.groupby('day').agg(mad, engine='numba')
Run Code Online (Sandbox Code Playgroud)
错误并给出
---------------------------------------------------------------------------
NumbaUtilError Traceback (most recent call last)
<ipython-input-21-ee23f1eec685> in <module>
----> 1 df.groupby('day').agg(mad, engine='numba')
~\AppData\Local\Continuum\anaconda3\envs\ds-cit-dev\lib\site-packages\pandas\core\groupby\generic.py in aggregate(self, func, engine, engine_kwargs, *args, **kwargs)
939
940 if maybe_use_numba(engine):
--> 941 return self._python_agg_general(
942 func, *args, …Run Code Online (Sandbox Code Playgroud)