excel.csv文件导入到Python时的文件舍入问题

2024-04-25 22:16:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了以下代码从csv文件导入值:

directory = os.path.join("fileLocation") 
file = 'fileName.csv'
filename = directory + file
datafile = open(filename,'r')
reader = csv.reader(datafile)
data1 = []
for row in reader:
    data1.append(float(row[0]))
resistance_values = np.array(data1)

.csv文件的值结构如下:

0
19,54091284
31,73614448
...

我希望将数据导入到python中作为一个float列表,如下所示:

0.0
19.54091284
31.73614448
...

当前正在对值进行四舍五入,如下所示:

0.0
19.0
31.0
...

如何避免这种舍入问题?你知道吗


Tags: 文件csvpath代码osfloatfilenamedirectory
3条回答

问题是您的数字使用的是欧洲格式,而逗号分隔变量CSV reader默认使用逗号作为列分隔符,因此您会发现第[0]行的字符串值实际上是“19”,第[1]行的字符串值是“54091284”,而您希望第[0]行是“1954091284”。您可以用几种方法来解决这个问题,但我只需在解析之前将文件的整行转换为带有点的非欧洲格式即可。你知道吗

with open(filename,'r') as f:
    data1 = [float(line.replace(',', '.')) for line in f.readlines()]

我想这可能会帮助你:

locale.setlocale(LC_NUMERIC, 'nl-NL') # set to a locale where the comma is used as decimal point

for row in reader:
    data1.append(float(locale.atof(row[0])))
resistance_values = np.array(data1)

如果float()仍然进行过多的舍入,那么也可以尝试float()而不是decimal()。你知道吗

尝试:

import numpy as np
datafile = open(filename,'r').read()
resistance_values = np.array([float(i.replace(',','.')) for i in datafile.splitlines()])
print(resistance_values)

相关问题 更多 >

    热门问题