将多列附加到两列python中

时间:2017-07-10 10:45:37

标签: python csv append

我有一个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分钟。任何帮助将不胜感激。

1 个答案:

答案 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 )叠加,日期为你的日期向量。