取消
顯示的結果
而不是尋找
你的意思是:

有沒有更好的方法加入兩個dataframes沒有重複的列?

kruhly
新的貢獻者二世

我想保持隻有一列加入dataframes使用。使用select()加入後似乎並不直接,因為真實的數據可能會有很多列或列名稱可能不被人知道的。下麵一個簡單的例子

llist =[(“鮑勃”,“2015-01-13”,4),(“愛麗絲”,“2015-04-23”,10)]地區指定基金= sqlContext.createDataFrame (llist,(“名字”,“日期”,'時間'])打印ddf.collect () up_ddf = sqlContext。createDataFrame([(“愛麗絲”,100年),(“鮑勃”、23)],[“名稱”,“上傳”])

這讓“名稱”列當我們隻需要一個!

df =地區指定基金。加入(up_ddf ddf.name = = up_ddf.name)打印ddf.collect()顯示(ddf.select (ddf.name, ddf.duration / ddf.upload .alias (duration_per_upload)))

執行上麵顯示導致一個模棱兩可的名字錯誤:

org.apache.spark.sql。AnalysisException:引用“名字”是模棱兩可的,可以是:名字# 8484,# 8487。

錯誤可以避免通過使用從右手dataframe up_ddf.name加入

ddf.select (up_ddf.name……

但是似乎尷尬。有沒有更好的方法加入兩個dataframes和隻有一個“名稱”列?

1接受解決方案

接受的解決方案

Bill_Chambers
因素二世
12個回複12

bplaster
新的貢獻者二世

1.4的火花,你應該能夠:

val new_ddf =地區指定基金。加入(up_ddf“名稱”)

類似的電子郵件線程在這裏

krdeepak
新的貢獻者二世

看起來像在火花1.5中,我們沒有df。加入的功能。有一個頂級加入功能。

如何刪除連接列一次(在加入表中出現兩次,和任何聚合列失敗)?

JingtaoYun
新的貢獻者二世

這不是有效的尤其是在加入群的列。它應該被移除後自動加入。不明白為什麼這樣做。

jsharrett
新的貢獻者二世

  1. 地區指定基金=地區指定基金。加入(up_ddf ddf.name = = up_ddf.name) .drop (up_ddf.name)

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map