导入具有两行作为标题的csv你好
我正在使用相对较大的csv文件(±150MB),文件从需要合并为列标题的两行开始。
我编写了一个脚本,该脚本遍历每一列,并将列名设置为当前名称+第一行的值。
它运行非常缓慢的问题,有时我需要等待±10分钟才能更改4000列的名称。
它在某种程度上取决于文件的大小,在一个小文件中更改相同数量的列需要几秒钟。
我尝试了几种解决方法-
1.仅子集第一行并更改所有列名(非常快)。 然后,我以为我将串联原始表,但是我不能这样做,因为列名现在不一样了。
2.根据建议更新CSV导入设置这里。但我仍然看不到包含两行作为标题的选项。
3.将文件导出为xls,然后以两行作为标题导入。导出时间长于原始列名更改。
我还缺少另一种解决方法,也许有一个选项可以基于列表更改所有列名?
在此先感谢您的帮助。
数据表脚本编写回复:导入带有两行作为标题的CSV你好@兰斯,
如果使用JMP打开文件,然后取消选中“使用默认程序打开”框。 取消选中以文本形式打开。”,然后选择单选按钮“数据(使用预览)”;确保在“ JMP打开”窗口中选择所有文件(*。*)。

然后,您可以选择一些重要的定界符和其他内容,包括数据开始的行,因此,如果有两行作为标题,则可以跳过其中的一行,然后将数据开始设置为第3行或其他任何行。

然后,您可以在数据表中打开“源”脚本,并根据需要编辑“导入”设置,然后在JSL程序中使用此脚本。

另外,如果您可以将其重新保存为XLSX文件,则可以使用Open()命令并定义要打开的选项卡,要开始/停止的列以及要开始/停止的行以及多行作为标题。 那应该解决您必须重命名列的问题。

我要提到的最后一个选项是,如果您知道列名是什么,并且它们没有更改,那么在您的脚本中,您可以有一个列表ColNames = {“ ...”,“ ...”,.. 。}中所有正确的名称用引号引起来,并在列表中用逗号分隔。 然后,在加载CSV文件之后,您可以运行For Loop以根据ColNames中的条目重命名每列。 例如:
dt=Current data table();//or whatever your data table name is.
icols=.;//variable to count through the columns
For(icols=1, icols<=N Columns(dt), icols++,
Column(dt, icols) <<SET name=""></SET>
希望这些帮助之一!
祝好运,
DS
回复:导入带有两行作为标题的CSV您可能会尝试多个文件导入,即使只是一个文件也是如此。 可能会更快,并支持多个行标题。
文件->导入多个文件