Python:如何对照标量值检查csv文件行中的每个值?
我有一个10列15行的csv文件。我想检查每行中大于值40的值的分数,并将分数列表传递到另一个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]
导入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
不是列表索引,而是列表元素。