You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将TXT文件中字符串格式的科学计数法数值转换为浮点数?

如何将TXT文件中字符串格式的科学计数法数值转换为浮点数?

看起来你遇到的问题根源是分隔符设置不对!咱们先理清楚问题出在哪:

从你贴的输出能看到,每一行里的多个科学计数法数值是用多个空格分隔的,但你在read_csv里指定了delimiter="\t"(制表符),这就导致pandas把整一长串的数值当成了单独的一列。这种情况下你再去转数值,整个长字符串肯定没法转成单个浮点数,结果自然全是NaN了。

给你两个简单的解决思路,核心都是先把数据正确拆分成单独的列:


方案1:读取时直接用正确的分隔符

直接把分隔符改成sep="\s+"(它能匹配一个或多个空白字符,不管是空格还是制表符都能处理),pandas会自动把每个科学计数法的字符串分到单独的列,并且默认就能识别成浮点数:

import pandas as pd
import numpy as np

# 用\s+匹配多个空格分隔的数值,正确拆分列
data_Test = pd.read_csv("TestData5.txt", header=None, sep="\s+")

# 可选:如果有个别异常值,强制转换确保数值类型
data_Test = data_Test.apply(pd.to_numeric, errors='coerce')

# 查看转换后的结果
print("TestData (first 5 rows):\n", data_Test.head())

运行后你会发现,原来的长字符串被拆成了多列,每列都是正常的浮点数,不会再出现NaN了。


方案2:先按原方式读取,再拆分列

如果你因为某些原因必须先按整列读取,也可以后续拆分字符串列:

import pandas as pd
import numpy as np

# 先按原方式读取整列字符串
data_Test = pd.read_csv("TestData5.txt", header=None, delimiter="\t", dtype=str)

# 拆分每一行的字符串成多个数值列
data_Test = data_Test[0].str.split(expand=True)

# 转换为浮点数
data_Test = data_Test.apply(pd.to_numeric, errors='coerce')

# 查看结果
print("TestData (first 5 rows):\n", data_Test.head())

这个方案是先把整列的长字符串按空格拆分,再转成数值类型,效果和方案1一致。


最后可以验证下数据类型,用print(data_Test.dtypes),正常情况下所有列都会显示float64,说明转换成功啦!

备注:内容来源于stack exchange,提问作者n00bcoder_24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:05:30