You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决单值字典转换为Pandas DataFrame时的ValueError错误?

解决字典转DataFrame时的ValueError问题

问题场景

我们运行以下代码训练多个回归模型并记录测试集R²分数:

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression,Ridge,Lasso,ElasticNet
from sklearn.neighbors import KNeighborsRegressor
from sklearn.tree import DecisionTreeRegressor
from sklearn.svm import SVR
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

X,y =make_regression(n_samples=2000,n_features=20,n_informative =7,noise=3.1,random_state=1)
X_train,X_test,y_train,y_test =train_test_split(X,y,test_size=0.3,random_state=1)

algo_list =[('linear_Regression',LinearRegression()),('Ridge',Ridge()),('Lasso',ElasticNet()),('KNN',KNeighborsRegressor()),('CART',DecisionTreeRegressor()),('SVR',SVR())]
algo_results ={}
for name,model in algo_list:
  model.fit(X_train,y_train)
  algo_results[name] =model.score(X_test,y_test)
print(algo_results)

运行后得到的字典结果:

{'linear_Regression': 0.999615308811996, 'Ridge': 0.9996150421204321, 'Lasso': 0.8758019197852375, 'KNN': 0.6274472685707742, 'CART': 0.46164502153497877, 'SVR': 0.17305435111869027}

尝试用以下代码将字典转为DataFrame时触发错误:

algo_dataframe =pd.DataFrame.from_dict(algo_results)
print(algo_dataframe.head())

错误信息:

ValueError: If using all scalar values, you must pass an index

错误原因

你的推测正确:字典中所有值都是单个标量(每个模型对应一个R²分数),pandas无法自动推断DataFrame的结构,因此要求显式传入索引参数。

修正方案

方案1:显式传入index参数

通过指定单元素索引,让pandas生成一行多列的DataFrame,每列对应一个模型的分数:

algo_dataframe = pd.DataFrame.from_dict(algo_results, index=[0])

方案2:转换为键值对列表构造DataFrame

将字典转为(模型名, 分数)的列表,生成两列多行的结构,更适合对比不同模型的性能:

algo_dataframe = pd.DataFrame(list(algo_results.items()), columns=['模型名称', '测试集R²分数'])

方案3:先转Series再转DataFrame

先将字典转为Series(索引为模型名,值为分数),再转为DataFrame,得到一列多行的结构:

algo_dataframe = pd.Series(algo_results, name='测试集R²分数').to_frame()

内容的提问来源于stack exchange,提问作者dato datuashvili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:00:59