在Python中将数字数据从CSV转换为浮点并获得平均值
我有以下python函数,它接受目录和文件名的输入 它从CSV文件中读取,该文件可以有一行“null”作为值 tps.csv 1 2 3 4 null 5 6在Python中将数字数据从CSV转换为浮点并获得平均值,python,Python,我有以下python函数,它接受目录和文件名的输入 它从CSV文件中读取,该文件可以有一行“null”作为值 tps.csv 1 2 3 4 null 5 6 我需要添加或更改什么以使其忽略/跳过非数值?在文件中,一行以\n结尾。然后是字符串null\n,而不是null。 处理该问题的最佳方法可能是使用strip方法,该方法专为以下目的而设计: if line.strip() != 'null': ... 请注意,是不在此处使用 在文件中,一行以\n结尾。然后是字符串null\n,而
我需要添加或更改什么以使其忽略/跳过非数值?在文件中,一行以
\n
结尾。然后是字符串null\n
,而不是null
。
处理该问题的最佳方法可能是使用strip
方法,该方法专为以下目的而设计:
if line.strip() != 'null':
...
请注意,
是
不在此处使用 在文件中,一行以\n
结尾。然后是字符串null\n
,而不是null
。
处理该问题的最佳方法可能是使用strip
方法,该方法专为以下目的而设计:
if line.strip() != 'null':
...
请注意,
是
不在此处使用 使用比较代替不是:
if line != 'null':
是
/不是
检查对象标识,而=
/=代码>比较对象的值。在您的例子中,该行与常量字符串null
具有相同的值,但它们是不同的对象
注意,由于Python的内部结构,将字符串与is
进行比较有时会起作用,但并不总是如此
>>> 'foo' is 'foo'
True
>>> 'foobar'[:3] is 'foo'
False
使用比较而不是is not
:
if line != 'null':
是
/不是
检查对象标识,而=
/=代码>比较对象的值。在您的例子中,该行与常量字符串null
具有相同的值,但它们是不同的对象
注意,由于Python的内部结构,将字符串与is
进行比较有时会起作用,但并不总是如此
>>> 'foo' is 'foo'
True
>>> 'foobar'[:3] is 'foo'
False
is
与str
或str==str
中的str操作不同,因此错误
我相信你可以通过一个列表来做到这一点
with open(csv_filename) as f:
numbers = [float(l.strip()) for l in f if l != 'null']
return 0 if len(numbers) == 0 else sum(numbers) / float(len(numbers))
is
与str
或str==str
中的str操作不同,因此错误
我相信你可以通过一个列表来做到这一点
with open(csv_filename) as f:
numbers = [float(l.strip()) for l in f if l != 'null']
return 0 if len(numbers) == 0 else sum(numbers) / float(len(numbers))
您可以共享错误/回溯吗?请尝试将行中的if条件更改为-if'null'而不是行不为null。您可以共享错误/回溯吗?尝试将行中的if条件更改为-if'null'而不是行不为null。谢谢。这是我找到的最短的解决方案。我将其与@aluriak answer结合使用,并在列表中添加了.strip(),如果l.strip()!='谢谢。这是我找到的最短的解决方案。我将其与@aluriak answer结合使用,并在列表中添加了.strip(),如果l.strip()!='谢谢你的解释,谢谢你的解释。