调用Statsmodel的adfuller函数报错TypeError: 'function' object is not subscriptable求助
问题原因
你出现TypeError: 'function' object is not subscriptable报错的根源不是dftest[0:4]这行,是循环遍历临界值的那行变量名写错了:
# 错误写法 for key, value in df_total[4].items():
adfuller接口返回的所有检验结果都存储在dftest变量中,dftest的第4位索引对应的值才是存储不同显著性水平临界值的字典,你误用了数据集变量df_total,如果你的运行环境中恰好有和df_total重名的函数,就会触发函数无法被下标索引的报错。
修复后的完整代码
from statsmodels.tsa.stattools import adfuller import pandas as pd def adf_test(dataset): print("Results of Dickey-Fuller Test:") dftest = adfuller(dataset, autolag="AIC") dfoutput = pd.Series( dftest[0:4], index=[ "Test Statistic", "p-value", "#Lags Used", "Number of Observations Used", ], ) # 将df_total改为dftest即可 for key, value in dftest[4].items(): dfoutput["Critical Value (%s)" % key] = value print(dfoutput) adf_test(df_total['Total Deaths'])
如果修改后仍有同类型报错,检查你的运行环境中是否有和df_total重名的自定义函数,修改重名函数名称后重新运行即可。
内容的提问来源于stack exchange,提问作者JamesArthur
相关产品推荐
相关产品推荐

