我有一个csv文件,其中包含大约100列数据。每列代表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分钟。任何帮助将不胜感激。
答案 0 :(得分:1)
如果我得到了这个正确你有一个96行和100列的csv,并希望日复一日地堆叠成一个向量与960条目的向量,对吧?
一种简单的方法是使用numpy:
import numpy as np
x = np.genfromtxt('original_file.csv', delimiter=',')
data = x.ravel(order ='F')
注意numpy是第三方库,但是数学的首选库。
第一行将csv读入ndarray
,就像矩阵一样(即使它对数学运算表现不同)
然后使用ravel
进行矢量化。 oder
是这样的,它将行堆叠在一起而不是列,即日复一日。 (如果你想要时间点,请保留默认值/空白)
对于您的约会问题,请参阅How can I make a python numpy arange of datetime我想我无法提供更好的示例。
如果你有这两个数组,你可以通过x.reshape(960,1)
确保形状,然后将它们与np.concatenate([x,dates], axis = 1 )
叠加,日期为你的日期向量。