将数据转换成Python以在CSV中使用 - 不同的采样率

时间:2013-11-04 20:23:08

标签: python csv

我有一些MAT文件,我想输出为CSV。如果我放弃,我可以将它们保存为.txt,但我真的很想知道如何在CSV中执行此操作。

我的问题是我为不同的频道设置了不同的时间戳。我相信我有一些低至.5hz的通道和一些大约10赫兹的通道。但是,它们似乎并不完全相符。有人建议零顺序保持(我不明白如何执行),但由于我将这些数据发布为“未掺杂”,我真的不想调整时间戳。

channels = []

for key in matfile.keys():
    if key.startswith('CAN'):
        channels.append(str(key) + '_time')
        channels.append(key)

output = {}

for channel in channels:
    if channel.endswith('_time'):
        channel_time = channel[0:-5]       
        output[channel] = matfile[channel_time].item()[6] 
    else:
        output[channel] = matfile[channel].item()[7].item()[0]

with open(path_plus_title, 'wb') as outfile:
   writer = csv.writer(outfile)
   writer.writerow(channels)
   writer.writerows(zip(*(output[k] for k in channels)))    

这只给了我想要的频道,按照频道时间标记的顺序跟着频道...但它在到达最短数据列的末尾后停止写字。

我想用空格或零或任何东西填充较短的列以保持数据的直线,并清楚地表明数据结束的位置。是否可能采用以列为单位的方法来实现,我错过了?

1 个答案:

答案 0 :(得分:1)

尝试使用itertools.izip_longest()。它早期结束的原因是zip在第一个迭代器结束时结束,但是izip_longest使用默认值缓冲较短的迭代器,就像你想要的那样。