线性与独立性测试运行报ValueError:无法转换为Series问题求解
问题原因
这个报错的根源是你先创建了完全空白的pd.DataFrame(),没有默认索引,逐列赋值时y_train、olsmod2.fittedvalues、olsmod2.resid三者的索引无法对齐,或者某一个对象的格式无法被pandas自动转换为可匹配的Series结构。
解决方案
首选方案:直接通过字典创建DataFrame
不要先建空白DataFrame再逐列赋值,直接把所有列放进字典里初始化,pandas会自动处理索引对齐逻辑,规避空DF的索引匹配问题:
df_pred = pd.DataFrame({ "Actual Values": y_train, "Fitted Values": olsmod2.fittedvalues, "Residuals": olsmod2.resid }) df_pred.head()
异常排查方案
如果上述代码仍然报错,按以下步骤排查:
- 先验证三个对象的长度是否一致,分别执行代码输出长度:
如果三者长度不同,说明你当前的print(len(y_train), len(olsmod2.fittedvalues), len(olsmod2.resid))y_train和训练olsmod2时用的训练集不是同一份,需要替换为对应匹配的训练集标签。 - 如果长度一致仍报错,把所有对象转为numpy数组强制忽略索引差异:
df_pred = pd.DataFrame({ "Actual Values": y_train.values, "Fitted Values": olsmod2.fittedvalues.values, "Residuals": olsmod2.resid.values })
内容的提问来源于stack exchange,提问作者Nuwan Fernando
相关产品推荐
相关产品推荐

