【问题标题】:Updating a deprecated package pd.ewm_mean更新已弃用的软件包 pd.ewm_mean
【发布时间】:2018-05-03 01:07:40
【问题描述】:

如何更新此代码

代码

def Exponential_Moving_Average(df, n):  
    EMA = pd.Series(pd.ewma(df['Close'], span = n, min_periods = n - 1).mean(), name = 'EMA_' + str(n))  
    return df.join(EMA)

错误信息

/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:2: FutureWarning:pd.ewm_mean 对于 Series 已弃用,将在 未来版本,替换为 Series.ewm(span=10,min_periods=9,adjust=True,ignore_na=False).mean()

我尝试自己更新它,但我弄错了。

编辑:更新的答案会是这样吗?

def Exponential_Moving_Average(df, n): 
EMA=df['Close'].ewm(span=n,min_periods=n-1).mean(), name = 'EMA_' + str(n)
return df.join(EMA)

编辑 2:我厌倦了上面的编辑,但它不起作用。我收到这条消息

SyntaxError: can't assign to function call

【问题讨论】:

    标签: python python-3.x pandas deprecated


    【解决方案1】:

    正如他们所说的使用 Series.ewm,这里 series 指的是您实际数据框中的列

    EMA = df['Close'].ewm(span=n,min_periods=n-1).mean().rename('EMA_' + str(n))
    

    【讨论】:

    • @OptimusPrime 无论您在那里做什么,都不是这样做的方式。你想达到什么目的?
    • @OptimusPrime - 我尝试编辑答案,你怎么看?
    • @jezrael 谢谢你的编辑 :) 也许这就是 Op 想要的。
    • @Bharath 我正在尝试创建一个新列,显示我创建的函数中的指数移动平均线
    • @jezrael 感谢您的帮助,但我正在尝试从定义的函数创建一个新列。你怎么能这样做?
    猜你喜欢
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2016-11-26
    • 2020-11-29
    相关资源
    最近更新 更多