Python:如何对照标量值检查csv文件行中的每个值?

Python:如何对照标量值检查csv文件行中的每个值?,python,csv,Python,Csv,我有一个10列15行的csv文件。我想检查每行中大于值40的值的分数,并将分数列表传递到另一个csv文件中。我怎样才能做到 我已尝试了以下代码,但无法获得它。提前谢谢 导入csv n、 列,计数=0,0,0 dsr_列表=[] 将open('0'+'\压力\物理\进程.csv','r')作为f1: 按_val=csv.reader(f1) 按值=列表(按值) #打印(按数值) 对于新闻界的我: 对于范围(0,10)内的j: 如果按[i]

我有一个10列15行的csv文件。我想检查每行中大于值40的值的分数,并将分数列表传递到另一个csv文件中。我怎样才能做到

我已尝试了以下代码,但无法获得它。提前谢谢

导入csv
n、 列,计数=0,0,0
dsr_列表=[]
将open('0'+'\压力\物理\进程.csv','r')作为f1:
按_val=csv.reader(f1)
按值=列表(按值)
#打印(按数值)
对于新闻界的我:
对于范围(0,10)内的j:
如果按[i]<40:
计数+=1
dsr=(10-计数)/10
dsr_list.append(dsr)
打开('dsr.csv','w')作为f2:
write=csv.writer(f2)

write.writerow(dsr\U列表)
i
是列表元素,而不是列表索引,因此使用
i
而不是
按[i]

在处理每一行之前,您需要将
count
重置为
0
,否则您将从上一行添加到计数中

不需要内部循环,您可以将
sum()
与生成器一起使用,以获得与条件匹配的元素数

csv.reader()
将返回字符串数组,您需要将它们转换为数字,然后再与
40
进行比较

for row in press_val:
    count = sum(float(col) >= 40 for col in row)
    dsr = count / len(row)
    dsr_list.append(dsr)
我已经反转了条件,所以我不需要从列数中减去
count

整个事情可以写成一个单一的列表。无需先将CSV阅读器转换为列表

with open('0' + '_pressure_physical_process.csv', 'r') as f1:
    press_val = csv.reader(f1)
    dsr_list = [sum(float(col) >= 40 for col in row)/len(row) for row in press_val]

i
不是列表索引,而是列表元素。