首页 > 解决方案 > 将 pd.ewma 从 pandas 0.17.0 迁移到 1.1.2

问题描述

我正在尝试将这行代码从 Python 2.7/Pandas 0.17.0 移植到 Python 3.7/Pandas 1.1.2:

python 2.7 / pandas 0.17.0
returnVar = pd.ewma(varSeries, span = varSpan)

python 3.7 / pandas 1.1.2。
returnVar = varSeries.ewm(span = varSpan)

在遗留代码中,返回类型是pandas.core.series.Series,而在迁移代码中,返回类型是pandas.core.window.ewm.ExponentialMovingWindow

如何解决这个问题,以便获得完全相同的返回值和类型?

蟒蛇 2.7 / 熊猫 0.17.0

>>>type(varSeries)
<class 'pandas.core.series.Series'>
>>>type(varSpan)
<type 'numpy.float64'>
>>>varSpan
3.0
>>>varSeries
IndexDate
2002-01-07    347.98470
                 ...  
2020-09-29     89.11943
Name: SPGSCLP, dtype: float64
>>>
>>>returnVar = pd.ewma(varSeries,span=varSpan)
>>>type(returnVar)
<class 'pandas.core.series.Series'>
>>>returnVar
IndexDate
2002-01-07    347.984700
                 ...  
2002-01-08    345.500633
Name: SPGSCLP, dtype: float64

蟒蛇 3.7 / 熊猫 1.1.2

>>>returnVar = varSeries.ewm(span=varSpan)
>>>type(returnVar)
<class 'pandas.core.window.ewm.ExponentialMovingWindow'>
>>>returnVar
ExponentialMovingWindow [com=1.0,min_periods=1,adjust=True,ignore_na=False,axis=0]

标签: pythonpandas

解决方案


感谢二凡。

移植的代码应该是:

returnVar = varSeries.ewm(span=varSpan).mean()

推荐阅读