【发布时间】:2018-04-23 01:03:49
【问题描述】:
我有一个来自 perfmon 的 .csv 文件。该文件有 6000 条记录,如下所示:
(PDH-CSV 4.0) (SA Pacific Standard Time)(300),"\\server1\PhysicalDisk(_Total)\% Disk Read Time","\\server1\PhysicalDisk(_Total)\% Disk Write Time"
10/30/2017 15:00:15.568," "," "
10/30/2017 15:00:30.530,"25.763655942362824","130.21748494987176"
10/30/2017 15:00:45.518,"25.591636684958058","135.81093813384427"
我需要从第 1 列和第 2 列中获取最小值、最大值和 95 个百分位数。但是,作为一个新手,我无法通过第一个挑战,即将每个值格式化为 int:
import csv
sum = 0
fila = 0
with open('datos_header.csv') as csvfile:
leercsv = csv.reader(csvfile, delimiter = ',')
csvfile.__next__()
for col in leercsv:
col1 = (col[1])
subtot = float(col1 * 4)
# fila = fila + 1
# sum = col1 + float(col)
#tot = sum / fila
print(subtot)
然后得到:
Traceback(最近一次调用最后一次): 文件“”,第 10 行,在 ValueError:无法将字符串转换为浮点数:
我试过了: - 删除标题 - 使用正则表达式删除每个非数字的 / 或 : 值 - 删除空白
话虽如此:
- 除了错误之外,您认为我在获取最小值、最大值和 95 percentil 的道路上是否正确?
- 如果是这样,需要按照我的代码将字符串转换为浮点数吗?
- 如果没有,请您帮忙吗?
谢谢!
【问题讨论】:
-
如果你将一个字符串相乘,例如"2.5" 和 4 会导致 "2.52.52.52.5" 不是浮点数。
-
请不要将您的整个家庭作业作为问题发布。将您的问题集中在特定问题上。例如,您可以只发布代码的第 10 行和您得到的异常,并询问如何将字符串正确转换为浮点数。
-
文件的第二行是
10/30/2017 15:00:15.568," "," "。最后两列是不能转换为浮点数的空格。将您对float的调用包装在 try-except 中,然后在 except 子句中处理这些情况。您可能想跳过这些行,在这种情况下您可以continue。或者您可以在这些情况下设置默认值。 -
subtot = float(col1 * 4)也不适用于浮点的有效字符串表示。你可能想要subtot = float(col1) * 4。