我有一个数据集,其中一些列名有点。当涉及到向量汇编程序时,问题就出现了。他们似乎相处不好,所以我试着从很多方面摆脱这些点,但都没有改变。
String[] expincols = newfilenameavgpeaks.columns();
VectorAssembler assemblerexp = new VectorAssembler()
.setInputCols(expincols)
.setOutputCol("intensity");
Dataset<Row> filenameoutput = assemblerexp.transform(newfilenameavgpeaks);
我用“”、“
”、“”、“
”、“”、“
”、“`”、“'”、“'”等 Package 了expincols中的每个元素,但什么都没有!我也在newfilenameavgpeaks的列名中尝试了这些方法,但仍然一无所获。你知道怎么逃跑吗?
1条答案
按热度按时间d7v8vwbk1#
如果数据集包含列
a.b
你还可以用df.col(
a.b)
选择带有.
以它的名义。这是因为dataset.col尝试解析列名并可以处理倒勾。但是,vectorassembler.transform接受提供的数据集的架构,并使用此structtype处理vectorassembler.transformschema中的列名。structtype的apply方法不包含处理backticks和抛出
IllegalArgumentException
如果列名不完全匹配。因此,唯一的选择是在将列提供给vectorassembler之前重命名这些列: