我有几个大的(100-300MB)csv文件,我想合并为一个并过滤掉一些列。它们的形状如下:
timestamp | variable1 | ... | variable200
01.01.16 00:00:00 | 1.59 | ... | 0.5
01.01.16 00:00:01 | ...
.
.
对于此任务,我使用的数据存储类包括所有csv文件:
ds = datastore('file*.csv');
当我读取所有条目并尝试使用writetable将它们写回csv文件时,我收到错误,输入必须是单元格数组。
在调试模式下查看从数据存储区读取的单元阵列时,我注意到,有几行只包含一个时间戳,这些行不在原始文件中。这些列位于文件的最后一行和后一行的第一行之间。这些行的时间戳是上一个时间戳的逻辑延续(就像使用excel一样)。
这是一个错误还是预期的行为?
我可以首先避免阅读这些行,还是之后必须将它们过滤掉?
提前致谢。
答案 0 :(得分:0)
由于似乎没有其他人有这个问题,我将分享我最终如何处理它:
<parameter name="env" value="xxx"/>
<parameter name="testName" value="Supplier: SKY Test"/>
<test name="multicom-test-sky">
<!--Build Post URL from the following-->
<parameter name="protocol" value="http://"/>
<parameter name="env" value="xxxx"/>
<parameter name="server" value="xxxx"/>
<parameter name="port" value="xxx"/>
<parameter name="endPoint" value="xxx"/>
<!--Syndicator login-->
<parameter name="syndicatorID" value="xxxxxxx"/>
<parameter name="syndicatorPassword" value="xxxxxx"/>
<parameter name="target" value="test"/>
<!--Searching Parameters-->
<parameter name="departure" value="LGW"/>
<parameter name="destination" value="GVA"/>
<parameter name="supplier" value="SKY"/>
<parameter name="numOfAdults" value="2"/>
<parameter name="numOfChildren" value="2"/>
<parameter name="numOfInfants" value="0"/>
<parameter name="startDate" value="20170318"/>
<parameter name="endDate" value="20170318"/>
<parameter name="minNumberofNights" value="7"/>
<parameter name="maxNumberofNights" value="7"/>
<parameter name="childOneAge" value="15"/>
<parameter name="childTwoAge" value="10"/>
<!--tests to run-->
<classes>
<class name="com.multicom.fab.api.EndToEndSimpleBooking"/>
</classes>
</test>
我拿了表的第二列并检查了一个空字符串。然后我通过逻辑索引用空数组填充所有有缺陷的行。 (如Matlab文档中所示)
遗憾的是,我找不到任何方法来阻止加载错误的数据,但最终在内存中执行此处理步骤的数据量并不大。