list indices必须是整数或切片,而不是str.x

时间:2018-05-16 04:53:33

标签: python list pandas

当我尝试使用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)

2 个答案:

答案 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()

代替。