Python做线性回归遇列类型为字符串、SettingWithCopyWarning报错如何解决
错误1:ValueError 无法将字符串转为float
- 触发原因:你在选取列时错误调用了
float('ORtg'),这段代码的作用是把"ORtg"这个字符串本身转成浮点型,自然会报错。你要做的是选取这几个字符串对应的列,再把列里存储的字符串格式的数值转为浮点型,而不是转换列名。 - 修复代码:
# 先按列名选中列,再统一转换为浮点型 x = df_2020[['ORtg', 'Pace', 'eFG%', 'TOV%']].astype(float)
错误2:SettingWithCopyWarning 警告
- 触发原因:你执行
data = data.dropna(axis=0, subset=['Rk'])之后,返回的data是原DataFrame的切片视图,后续对这个切片执行inplace=True的修改操作时,pandas无法判断你要修改原数据还是切片副本,就会抛出该警告。 - 修复代码:在dropna后主动创建副本即可:
data = data.dropna(axis=0, subset=['Rk']).copy()
额外注意事项
你当前给DataFrame设置列名时,出现了多组重复列名:2个eFG%、2个TOV%、2个FT/FGA,选取列时会匹配到多个重复列,导致后续训练逻辑出错,建议给重复列加上主客场后缀做区分,比如eFG%_home、eFG%_away。
内容的提问来源于stack exchange,提问作者mcq7
相关产品推荐
相关产品推荐

