我把两个dataframes,这是非常相似,这里给出Joining two DataFrames in Spark SQL and selecting columns of only one如何在Scala中连接两个数据框并根据其索引从数据框中选择几列?
不过,我想从df2
只选择第二列中的任务。在我的任务中,我将使用reduce
函数中的两个数据框的连接函数来获取数据框列表。在这个数据框列表中,列名将是不同的。但是,在每种情况下,我都想保留第二列df2
。
我没有找到任何地方如何通过其编号索引来选择数据框的列。任何帮助表示赞赏!
编辑:
ANSWER
我想出了解决方案。下面是做到这一点的一种方法:
def joinDFs(df1: DataFrame, df2: DataFrame): DataFrame = {
val df2cols = df2.columns
val desiredDf2Col = df2cols(1) // the second column
val df3 = df1.as("df1").join(df2.as("df2"), $"df1.time" === $"df2.time")
.select($"df1.*",$"df2.$desiredDf2Col")
df3
}
,然后我可以dataframes名单上的reduce
操作应用此功能。
var listOfDFs: List[DataFrame] = List()
// Populate listOfDFs as you want here
val joinedDF = listOfDFs.reduceLeft((x, y) => {joinDFs(x, y)})
大胆注意您可以让您的数据帧的ANL例子吗? – Psidom
@Psidom:我想出了一个解决方案。请参阅编辑。 – inferno