【发布时间】:2017-12-14 01:39:36
【问题描述】:
我有一个包含大约 100 列数据的 csv 文件。每列代表 100 天中每一天每 15 分钟采集的温度值。每列的标题是当天的日期。我想将其转换为两列,第一列是日期时间(我必须以某种方式创建它),第二列是每天堆叠在一起的温度。
我的尝试:
with open("original_file.csv") as ofile:
stack_vec = []
next(ofile)
for line in ofile:
columns = lineo.split(',') # get all the columns
for i in range (0,len(columns)):
stack_vec.append(columnso[i])
np.savetxt("converted.csv",stack_vec, delimiter=",", fmt='%s')
在我的尝试中,我试图创建一个新向量,每列都附加到它的末尾。但是,代码非常慢,可能无法正常工作!一旦我弄清楚了这一步,我就需要从每一列中获取日期,并将每行的日期时间添加 15 分钟。任何帮助将不胜感激。
【问题讨论】:
-
对于 .csv,我总是推荐使用 numpy 函数“genfromtext”。 csvData = genfromtxt('original_file.csv', delimiter=',') 之后,您可以像使用任何其他 numpy 数组一样使用 csvData,而不必担心行尾字符等问题。此外,它应该很快。 “可能不工作”是什么意思?
-
感谢您的提示。可能不工作,我的意思是程序正在运行但没有完成。我在大约 5 分钟左右后终止它。
-
我明白了。让我印象深刻的一件事是,您的循环中有 np.savetxt 覆盖所有 100 列。所以同一个文件被一次又一次地保存。无论如何,您应该考虑马文的回答。他也使用 genfromtext 并详细解释了您将如何在您的情况下使用它。