【发布时间】:2015-11-06 06:38:49
【问题描述】:
我以 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(),但我不确定最好的方法。我有一个形状为 (700,12) 的 numpy 数组,所以这是 700 行条目的 12 个“列”,并且“标题”已经存在。
with open("new_file.csv", "w") as toWrite:
writer = csv.writer(toWrite, delimiter=",")
writer.writerow([.....])
【问题讨论】:
-
您是在问“我现在如何将其写入新的 CSV 文件‘newtable.csv’?”还是您在问“我是否必须重新编写整个内容?”如果是前者,这是stackoverflow.com/questions/6081008/… 的副本。如果是后者,答案是“是”。
-
我不经常使用 numpy 进行 csv 读/写操作,但使用 pandas 来处理这类事情非常简单。考虑使用 pandas 进行 CSV 读/写和表格数据操作。
-
@Robᵩ 对于前者,请参阅我上面的编辑。
-
您是在逐行操作 CSV 文件还是在 CSV 的列中操作?如果逐行,您可以在读取 CSV 时处理/操作每一行,并在完成每一行时写入一个新文件。
Pandas绝对是一个好方法 - 你可以将 2D 的numpy array转换为DataFrame,然后转到.to_csv()(请参阅 stackoverflow.com/questions/21938932/… 以转换为DataFrame)