使用pd.to_numeric转换列时多数值变为NaN的原因排查
问题原因与解决办法
我一眼就看出问题所在了——你的Principal Remaining列里的数值字符串包含千位分隔符逗号(,),而pd.to_numeric()默认无法识别带逗号的字符串格式,所以除了那个没有逗号的836.61(刚好符合纯数字格式),其他所有带逗号的值都被errors="coerce"参数强制转换成了NaN。
解决步骤
你只需要先把字符串中的逗号去掉,再进行数值转换即可:
# 第一步:移除所有千位分隔符逗号 portfolio["Principal Remaining"] = portfolio["Principal Remaining"].str.replace(',', '') # 第二步:转换为数值类型 portfolio["Principal Remaining"] = pd.to_numeric(portfolio["Principal Remaining"], errors="coerce")
额外检查建议
如果转换后还是有NaN,建议先查看列中所有的唯一值,确认是否存在其他特殊字符(比如美元符号$、空格、非标准小数点等):
# 查看列内的所有唯一值 print(portfolio["Principal Remaining"].unique())
根据输出的异常字符,再用str.replace()做对应的清理即可。
内容的提问来源于stack exchange,提问作者Alissa
相关产品推荐
相关产品推荐

