Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用筛选器忽略空/空单元格_Python_Csv_Lambda - Fatal编程技术网

Python 使用筛选器忽略空/空单元格

Python 使用筛选器忽略空/空单元格,python,csv,lambda,Python,Csv,Lambda,我正在尝试将数字介于0.10和1.00之间的第22列过滤到Day.csv中。但其中一些单元格是空白的,没有任何数字,并导致错误: ValueError:无法将字符串转换为浮点: 以下是我尝试过的: reader = csv.reader(open("AllData.csv"), delimiter=',') filteredDay = filter(lambda p:0.10 <= float(p[23]) <= 1.00, reader) csv.writer(o

我正在尝试将数字介于0.10和1.00之间的第22列过滤到Day.csv中。但其中一些单元格是空白的,没有任何数字,并导致错误:

ValueError:无法将字符串转换为浮点:

以下是我尝试过的:

reader = csv.reader(open("AllData.csv"), delimiter=',') 
    filteredDay = filter(lambda p:0.10 <= float(p[23]) <= 1.00, reader)
    csv.writer(open(r"{}\Day.csv".format(queue),'w',newline =''),
               delimiter=',').writerows(filteredDay)

可以使用三元条件为空格返回False:

filteredDay = filter(lambda p: 0.10 <= float(p[23]) <= 1.00 if p[23] != '' 
                               else False, reader)
#                                                           ^^^^^^^^^^^^^^

可以使用三元条件为空格返回False:

filteredDay = filter(lambda p: 0.10 <= float(p[23]) <= 1.00 if p[23] != '' 
                               else False, reader)
#                                                           ^^^^^^^^^^^^^^

因此,当相关单元格不包含值时,您可能需要过滤器返回False?尝试:

filteredDay = filter(lambda p: p[23] != "" and
                               0.10 <= float(p[23]) <= 1.00, reader)

因此,当相关单元格不包含值时,您可能需要过滤器返回False?尝试:

filteredDay = filter(lambda p: p[23] != "" and
                               0.10 <= float(p[23]) <= 1.00, reader)

else False通常是一个很好的线索,表明布尔表达式可以更有效地使用rewritten@holdenweb是的,没错。通过使用表达式itselfelse False,通常可以很好地提示您的布尔表达式可以更高效地使用rewritten@holdenweb是的,没错。通过使用表达式本身