Pandas执行astype('float64')报错无法转换'571,2'为浮点如何解决
问题解决说明
报错根因
你遇到的报错核心原因是目标列中存在使用逗号作为小数分隔符的字符串(比如报错提示的'571,2'),Python标准浮点数格式要求使用点号作为小数分隔符,仅处理空字符串无法覆盖这类格式问题,因此转换类型时触发错误。
可行解决方案
方案1:先替换分隔符再转换类型
先把列中所有逗号替换为点号,再执行空值替换和类型转换即可:
import numpy as np df['Liquid Milk'] = df['Liquid Milk'].str.replace(',', '.', regex=False).replace("", np.nan).astype('float64')
参数regex=False是为了避免高版本pandas弹出正则匹配的警告,低版本可以省略。
方案2:使用pd.to_numeric更稳妥
如果列中还可能存在其他格式异常的内容,推荐用pandas内置的数值转换函数,自动把所有无法转换的内容转为NaN,不需要单独处理空值:
import pandas as pd import numpy as np df['Liquid Milk'] = pd.to_numeric(df['Liquid Milk'].str.replace(',', '.', regex=False), errors='coerce')
内容的提问来源于stack exchange,提问作者Phong Parker
相关产品推荐
相关产品推荐

