请帮助!我有几乎相同的SMA和EMA代码结构。 SMA代码正常,但EMA代码会收到错误:“ValueError:值的长度与索引的长度不匹配。”熊猫。 ValueError:值的长度不匹配索引的长度
SMA(简单移动平均线)代码:
import pandas as pd
import matplotlib.pyplot as plt
window_length = 20
df = pd.read_csv("TWII_2009-2011.csv")
df=df.set_index('Date') #####
close = df['Close']
def simple_moving_average(window_length):
sma=[]
for i in range(len(close)):
if i+1 < window_length:
sma.append(0)
else:
sma.append(sum(close[i+1 - window_length : i+1])/window_length)
return sma
df['SMA'] = simple_moving_average(window_length)
EMA(指数移动平均线)代码:
import pandas as pd
import matplotlib.pyplot as plt
window_length = 20
df = pd.read_csv("TWII_2009-2011.csv")
df=df.set_index('Date') #####
close = df['Close']
def exponential_moving_average(window_length):
ema = []
j=1
for i in range(len(close)):
if i+1 < window_length:
sma = sum(close[:window_length])/window_length
multiplier = 2/float(1 + window_length)
ema.append(sma)
ema.append(((close[window_length] - sma) * multiplier) + sma)
else:
tmp = ((i - ema[j]) * multiplier) + ema[j]
j = j + 1
ema.append(tmp)
return ema
df['EMA'] = exponential_moving_average(window_length)
我格式化了您的代码。但在将来,请突出显示您的代码,然后按编辑功能区上的{}按钮。 –
你有没有尝试过任何调试? – Evert
你应该发布完整的回溯,因为这将确切地确定错误的位置。 – mhawke