我有一个包含距离矩阵的csv文件,其部分看起来像是
有许多字段包含大于1000000的数字,我想编写一个python脚本,将矩阵中大于1000000的数字更改为零。
这是我的脚本,我不知道如何在这些字段中写入零,
import csv
f = open('distMatrix.csv', 'rb')
csvreader = csv.reader(f)
element = list(csvreader)
i = 0
j = 0
while i <= 55: #this is a 56 * 56 matrix
while j <= 55:
while element[i][j] >= 1000000:
element[i][j] = 0
j = j + 1
i = i + 1
随意提出建议,谢谢。
我在Windows 8.1 x64下使用python 2.7.4。
更新#1
我使用以下代码获得我想要的东西(谢谢,unutbu!),
import csv
import tempfile
import shutil
import os
os.chdir('C:\Users\Heinz\Desktop')
filename = 'distMatrix.csv'
with open(filename, 'rb') as f, tempfile.NamedTemporaryFile(mode='wb', delete=False) as g:
writer = csv.writer(g, delimiter = ',')
for row in csv.reader(f):
row = [element if float(element) < 10**6 else 0 for element in row]
writer.writerow(row)
shutil.move(g.name, filename)
已编辑的CSV看起来像
我刚编辑了unutbu脚本的一小部分,Martijn Pieters,感谢给我一个类似的例子。
答案 0 :(得分:3)
import csv
import tempfile
import shutil
filename = 'distMatrix.csv'
with open(filename, 'rb') as f, tempfile.NamedTemporaryFile(mode='wb', delete=False) as g:
writer = csv.writer(g)
for row in csv.reader(f):
row = [element if int(element) < 10**6 else 0 for element in row]
writer.writerow(row)
shutil.move(g.name, filename)