当我尝试使用Pandas计算滚动平均值时,我收到错误消息。 的错误:
list indices must be integers or slices, not str
无法弄清楚如何解决它。谁有人建议?谢谢。
for file in filename_day:
df = pd.read_csv(path_day + file)
Data_length=len(df)-1
ma_data=[]
ma_list=[5,10,20,30,60]
for ma in ma_list:
ma_data['MA_' + str(ma)] = pd.rolling_mean(df['close'], window=ma)
print(ma_data)
df.to_csv('C:/20180424_DD/MA/'+file)
答案 0 :(得分:1)
此行引发错误:
ma_data['MA_' + str(ma)] = pd.rolling_mean(df['close'], window=ma)
由于您已将ma_data
声明为list
- > ma_data=[]
。但是在上面的代码中,您尝试在key
中创建'MA_' + str(ma)
ma_data
list
,这是ma_data = {}
。
你需要的是这里的字典:
ModelSerializer
答案 1 :(得分:0)
正如akshat所说,错误就在那一行。如果您想要list
而不是dictionary
,请以这种方式修改代码:
for ma in ma_list:
df['MA_' + str(ma)] = pd.rolling_mean(df['close'], window=ma)
ma_data.append(df['MA_' + str(ma)])
一般情况下,pd.rolling_mean
已弃用。您可以考虑使用:
df['MA_' + str(ma)] = df['close'].rolling(window=ma).mean()
代替。