我把兩個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