解决Yahoo Finance数据处理中的TypeError: string indices must be integers问题
解决计算日移动平均时的TypeError错误
构建机器学习模型过程中,从Yahoo Finance获取CSV格式数据后,计算日移动平均时触发TypeError错误。
错误代码
ma_day = [10,30,50] for ma in ma_day: for df in df: Moving_Average = f"MA for {ma} days" df[Moving_Average] = df['Adj Close'].rolling(ma).mean()
报错信息
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /var/folders/m_/7qrjlgz130q_m51m48k7h0w80000gn/T/ipykernel_1389/3705405762.py in <module> 6 for df in df: 7 Moving_Average = f"MA for {ma} days" ----> 8 df[Moving_Average] = df['Adj Close'].rolling(ma).mean() TypeError: string indices must be integers
错误原因
内层循环for df in df会将DataFrame遍历为列名字符串,导致循环内的df变量变为字符串类型,无法使用df['Adj Close']这类字符串索引操作(字符串的索引必须是整数)。
修正后的代码
ma_day = [10,30,50] for ma in ma_day: Moving_Average = f"MA for {ma} days" df[Moving_Average] = df['Adj Close'].rolling(ma).mean()
内容的提问来源于stack exchange,提问作者Prachik
相关产品推荐
相关产品推荐

