請幫助!我有幾乎相同的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