【发布时间】:2017-05-09 00:31:39
【问题描述】:
我必须加入两个数据框,这与这里给出的任务非常相似Joining two DataFrames in Spark SQL and selecting columns of only one
但是,我只想从df2 中选择第二列。在我的任务中,我将在 reduce 函数中对两个数据帧使用 join 函数来获取数据帧列表。在此数据框列表中,列名将不同。但是,在每种情况下,我都希望保留df2 的第二列。
我在任何地方都找不到如何通过编号索引选择数据框的列。任何帮助表示赞赏!
编辑:
回答
我想出了解决办法。这是执行此操作的一种方法:
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
}
然后我可以在数据帧列表上的reduce 操作中应用此函数。
var listOfDFs: List[DataFrame] = List()
// Populate listOfDFs as you want here
val joinedDF = listOfDFs.reduceLeft((x, y) => {joinDFs(x, y)})
【问题讨论】:
-
你能举一个你的数据框的例子吗?
-
@Psidom:我想出了一个解决方案。请查看编辑。
标签: scala apache-spark dataframe