val columnName=Seq("col1","col2",....."coln");
是否有办法执行dataframe.select操作以获取仅包含指定列名的数据帧。
我知道我可以做dataframe.select("col1","col2"...)
但columnName
是在运行时生成的。
我可以在循环中为每个列名重复dataframe.select()
。它会有任何性能开销吗?还有其他更简单的方法来实现这个目标吗?
答案 0 :(得分:45)
val columnNames = Seq("col1","col2",....."coln")
// using the string column names:
val result = dataframe.select(columnNames.head, columnNames.tail: _*)
// or, equivalently, using Column objects:
val result = dataframe.select(columnNames.map(c => col(c)): _*)
答案 1 :(得分:2)
由于dataFrame.select()
需要一系列列并且我们有一系列字符串,我们需要将序列转换为List
col
并将该列表转换为序列。 columnName.map(name => col(name)): _*
从字符串序列中提供一系列列,这可以作为参数传递给select()
:
val columnName = Seq("col1", "col2")
val DFFiltered = DF.select(columnName.map(name => col(name)): _*)
答案 2 :(得分:0)
或者,你也可以这样写
val columnName = Seq("col1", "col2")
val DFFiltered = DF.select(columnName.map(DF(_): _*)