读取TXT转Pandas DataFrame时出现多余小数点问题求助
问题解决:ValueError: could not convert string to float: '0.439.1'
错误原因
核心问题在于读取数据时未指定header=None,导致pandas把文件第一行数值当成了列名。后续你将这些列名插回数据行的操作中,若pandas因分隔符识别问题对列名自动重命名(比如添加.1后缀),就会生成0.439.1这类无法转换为float的异常值。
另外,你调用pd.read_csv时直接传制表符作为位置参数的写法不规范,且Excel复制出的文本文件常以多个空格而非单纯制表符分隔,这也会加剧列识别错误。
修复方案
直接用正确方式读取所有数据行,无需手动迁移列名:
import pandas as pd # 用\s+匹配任意空白字符(兼容多个空格/制表符),header=None指定无列名,所有行均为数据 df = pd.read_csv(filename, sep='\s+', header=None) # 直接转换为float类型 df = df.astype(float)
原代码出错逻辑
当你执行pd.read_csv(filename, ' ')时:
- pandas默认将第一行
0.789 0.439 0.440当作列名,实际仅读取了后面两行数据; - 若文件分隔符不是纯制表符(比如多空格),pandas会错误识别列数,对异常列自动添加
.1这类后缀,生成0.439.1这类列名; - 你执行
df.loc[-1] = df.columns将带后缀的列名插入数据行,后续转float时自然触发错误。
内容的提问来源于stack exchange,提问作者Cornell
相关产品推荐
相关产品推荐

