2016-01-23 243 views
0

我有一个csv文件,其中包含我需要根据特定条件(使用python)删除的数据。我当数据需要被删除的条件是:根据条件替换csv数据(python)

  • X < -10
  • X> 10
  • -1.0E-300 < X < 1.0E-300

到目前为止我只有:

with open("Infile.csv","rb") as infile,open("Outfile.csv","wb") as outfile: 
     reader = csv.reader(infile) 
     writer = csv.writer(outfile) 
     for row in reader: 
      row = [x.replace(x, 'NaN') if -10 <= x <= 0 else x for x in row] 
      writer.writerow(row) 

这不会改变输出文件中的任何内容。

数据或许应该由0或NaN代替,虽然它并不真正的问题

+1

'x'是一个文本,所以你不能将它与数字进行比较 - 即使文本只有数字。你必须将文本转换为int()或float()。 – furas

+0

'不起作用'是不够好的描述。做什么,有什么不对? – hpaulj

+0

@furas我该如何为整个csv文件做到这一点? –

回答

0

您以前比较将文本转换为int()float()

要在x < -10x > 10你需要删除元素:

[ x if -10 <= float(x) <= 10 else 'NaN' for x in row] 

BTW:也许你应该使用模块pandas。这可能会更容易。