Python中如何读取含大写E科学计数法的CSV文件?
解决Pandas读取含大写E科学计数法的空格分隔CSV为数值类型的问题
你遇到的问题其实挺常见的——Pandas默认的解析引擎可能在某些场景下对大写E的科学计数法识别不够准确,导致读成了字符串类型。下面给你几个简单有效的解决方案:
方案一:读取后批量转换为数值类型
如果已经把文件读成了字符串类型的DataFrame,直接用pd.to_numeric配合apply就能批量转换所有列:
import pandas as pd # 先按原方式读取 df1 = pd.read_csv(filepath[0], header=None, delim_whitespace=True, lineterminator='\r') # 转换所有列为数值类型,无法转换的会变成NaN(方便排查异常数据) df1 = df1.apply(pd.to_numeric, errors='coerce')
转换完成后,你可以用df1.dtypes查看每列的类型,确认已经变成float64这类数值类型,就可以正常用来绘图了。
方案二:读取时指定Python引擎直接解析为数值
Pandas默认用C引擎读取文件,速度快但对某些特殊格式的兼容性不如Python引擎。试试在读取时指定engine='python',大概率能直接识别大写E的科学计数法:
import pandas as pd df1 = pd.read_csv(filepath[0], header=None, delim_whitespace=True, lineterminator='\r', engine='python')
这种方法一步到位,不需要后续转换,适合确认文件内容都是合法数值的场景。
额外提示
如果转换后出现NaN值,说明对应的单元格可能有非数值内容,你可以用df1[df1.isna().any(axis=1)]找出这些异常行,排查文件里的问题。
内容的提问来源于stack exchange,提问作者ChrizZ
相关产品推荐
相关产品推荐

