如何将DataFrame列转换为float类型并永久保留修改结果
解决方案
你当前使用的赋值写法本身就已经实现了永久修改原DataFrame的效果,运行代码后直接调用nba.head()就能看到修改已经被保留,不需要额外添加inplace参数。
报错原因说明
pd.to_numeric 方法本身不支持inplace参数,你直接在apply中传入inplace=True会触发无效参数报错,属于正常现象。
两种可用的永久修改方案
- 方案1(最推荐,就是你当前在用的写法,简洁高效)
# 运行后修改直接写入原nba对象,无需额外操作 nba[["G","GS","MP"]] = nba[["G","GS","MP"]].apply(pd.to_numeric) # 直接调用即可看到转换后的结果 nba.head()
如果你的列中存在无法转换为数值的特殊字符,可以添加errors参数避免转换报错,无法转换的内容会自动设为空值:
nba[["G","GS","MP"]] = nba[["G","GS","MP"]].apply(pd.to_numeric, errors="coerce")
- 方案2(逐列处理写法,无需整体赋值)
for col in ["G", "GS", "MP"]: nba[col] = pd.to_numeric(nba[col])
异常排查
如果运行上述代码后查看类型仍未修改,优先排查两个问题:
- 赋值完成后有没有重新读取原始nba数据源,覆盖了已修改的结果
- 转换的列中存在全量无法识别为数值的内容,导致转换后仍然是object类型
内容的提问来源于stack exchange,提问作者MKHN15
相关产品推荐
相关产品推荐

