numpy Python值错误:无法将字符串转换为浮点:'1,000,000E +06'

z5btuh9x  于 2023-01-09  发布在  Python
关注(0)|答案(2)|浏览(120)

我有一个大约70个字符串值的列表,它们都带有E+(05或06),它们应该被转换为浮点型(因为每当我试图打印这些值时,它总是忽略100000或1000000)。

raw_data = 'EISTest16_10CV_01.txt' # name of your file
# Define the columns from our txt table
columns = ["Pt.","Frequency","Z'","Z''","Frequency (Hz)","|Z|","theta"]
# Read the txt file
data = pd.read_csv(raw_data,names=columns, sep="\t" or " ", skiprows =7) #skiprows is used to remove the header as parameters

frequency = np.asarray((data["Frequency"]))

#print("first 3 frequencies: ")
#test = '{0:,.2f}'.format(float(frequency[0]))

#floatfrequency = float(frequency[1])
#print(floatfrequency)

下面的4行是我的问题所在。2我怎样才能把字符串变成浮点型呢?3或者我怎样才能从一个列表(或字符串)中读取E+06呢?
一些类似的答案建议使用函数strip()。作为一个例子,我是否应该使用它来删除E+05,然后手动添加100000倍?
另请尝试:test =“{0:,.2f}”. format(浮点型(频率[0]))
但是发生相同的错误。

xzlaal3s

xzlaal3s1#

你的问题出在小数点的逗号上。2你需要用一个点来表示小数点。3你应该用这样的点来代替逗号

df['YourColumn'] = df['YourColumn'].str.replace(',', '.').astype(float)

或者,您可以尝试使用十进制数选项读取文件,如下所示:

data = pd.read_csv(raw_data,names=columns, sep="\t" or " ", skiprows =7, decimal=",")
35g0bw71

35g0bw712#

我认为问题在于python中的小数点分隔符是一个点(.),而你的数据使用了逗号(,)。你可以用以下代码来解决这个问题:

floatfrequency = float(frequency[0].replace(',', '.'))

相关问题