使用熊猫的指数移动平均线

时间:2019-02-23 17:55:21

标签: pandas dataframe moving-average

我有这个数据框

                   2000  2001  2002  2003  2005  2006
Country Location                                    
US      Hawai       20    40   120   260    60   100
IT      Torino      40   450   140   540    54   200
FR      Paris       60   660   660   640    64   300
ISR     JER         80   880   380   830   830   400  

我想计算每个国家的指数移动平均值(EMA7)(不包括2000年至2005年-2006年)
我天真地尝试了这种方法。它是否正确?

ema7=df1.ewm(span=7,adjust=False).mean()   

给了

                   2000       2001      2002     2003       2005      2006
Country Location                                                            
US      Hawai     20.0000   40.00000  120.0000  260.000   60.00000  100.0000
IT      Torino    25.0000  142.50000  125.0000  330.000   58.50000  125.0000
FR      Paris     33.7500  271.87500  258.7500  407.500   59.87500  168.7500
ISR     JER       45.3125  423.90625  289.0625  513.125  252.40625  226.5625  

除了应该排除2006年这一事实之外,我无法确定我得到的值是否正确。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

使用:

ema7=df1.drop(2006, axis=1).ewm(span=7,adjust=False).mean() 
print (ema7)
                     2000       2001      2002     2003       2005
Country Location                                                  
US      Hawai     20.0000   40.00000  120.0000  260.000   60.00000
IT      Torino    25.0000  142.50000  125.0000  330.000   58.50000
FR      Paris     33.7500  271.87500  258.7500  407.500   59.87500
ISR     JER       45.3125  423.90625  289.0625  513.125  252.40625

ema7=(df1.set_index(2006, append=True)
        .ewm(span=7,adjust=False)
        .mean()
        .reset_index(level=2)
        .sort_index(axis=1))
print (ema7)
                     2000       2001      2002     2003       2005  2006
Country Location                                                        
US      Hawai     20.0000   40.00000  120.0000  260.000   60.00000   100
IT      Torino    25.0000  142.50000  125.0000  330.000   58.50000   200
FR      Paris     33.7500  271.87500  258.7500  407.500   59.87500   300
ISR     JER       45.3125  423.90625  289.0625  513.125  252.40625   400