我以CSV文件的形式打开,将内容转换为numpy数组,然后操作数组。现在我如何将它写入一个新的CSV文件'newtable.csv'?
file_name = "table.csv"
import numpy as np
reader=csv.reader(open("table.csv","rb"),delimiter=',')
x=list(reader)
result=np.array(x).astype('str') # convert to numpy array我不知怎么应该用
writer = csv.writer(open('newtable.csv', 'wb'), delimiter=',')但是,我没有更改CSV文件的总体结构;我仍然使用相同大小的列和行。(我只改了几个号码)我要重写整件事吗?
编辑:在numpy数组的情况下,我将如何重写整个过程?np.savetxt("foo.csv", result, delimiter=",")的问题在于它不是正确的格式。您必须以某种方式使用格式说明符。
EDIT2:我应该以某种方式使用writerow(),但我不确定最好的方法是什么。我有一个numpy数组形状( 700 , 12 ),因此这是由700行条目组成的12个“列”,并且"title“已经存在。
with open("new_file.csv", "w") as toWrite:
writer = csv.writer(toWrite, delimiter=",")
writer.writerow([.....])发布于 2015-11-04 19:49:58
是的,除非您只是附加到现有文件的末尾,否则您必须重写整个文件,以便对内容进行任何更改。
在EDIT2:之后的响应
要将2D numpy数组写入CSV文件,可以执行以下操作。
假设您操作的2D数组现在称为result_edited
with open('new_file.csv', 'wb') as toWrite:
writer = csv.writer(toWrite) # if the delimiter is ',', you don't need to specify
for row in result_edited:
writer.writerow(row)你大部分时间都在那里!
或者,当您操作时,如果每一行都是相互独立的,则可以逐行读写。见下文。
file_name_in = 'numeric_table.csv'
file_name_out = 'new_file.csv'
with open(file_name_in, 'rb') as f_in:
reader = csv.reader(f_in)
with open(file_name_out, 'wb') as f_out:
writer = csv.writer(f_out)
for row in reader:
# manipulate row, change numbers, etc.
writer.writerow(row) # Write row to new filehttps://stackoverflow.com/questions/33530608
复制相似问题