0

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

我的问题是我对不同的频道有不同的时间戳。我相信我有一些低至 0.5 赫兹的频道和一些大约 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)))    

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

我想用空格或零或任何东西填充较短的列,以保持数据直截了当,并清楚地表明这是数据结束的地方。是否有一种我错过的按列方式来做到这一点?

4

1 回答 1

1

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

于 2013-11-04T20:32:28.010 回答