2017-10-09 160 views
0

解釋我的問題用一個例子..星火:合併兩個dataframes

table_name 

col1 col2 col3 
1  aaa xxx 
1  bba yyy 
2  ccc yyy 

我希望我的最後輸出到像:

table_name 

col1 col2 col3 
1  aab xxx 
1  bbc yyy 
2  cc yyy 

我有3列的表(沒有主鍵),我不得不改變這三列中第二列的數據,現在我想用這個新的第二列替換舊列。

df1 = hc.sql("select col1 from table_name") 
df2 = hc.sql("select col2 from table_name") 
df3 = hc.sql("select col3 from table_name") 

有什麼辦法可以做到這一點?

由於還有就是我覺得這沒有主鍵是一個辦法:

我可以爲dataframes添加row_numbers(行號會托特他據幀新列),並可以加入對ROW_NUMBER所有dataframes。 - 這裏的問題是,當我「從table_name選擇col1」和「從table_name選擇col2」沒有任何保證,在第一次和第二次查詢我會得到相同的順序行。(請糾正我,如果我錯了)

使它簡單我只想做pyspark如下:

table1 

col_1 
a 
b 
c 

table2 

col_2 
d 
e 
f 

into--- 

table_1_2 

col1 col2 
a d 
b e 
c f 

回答

0

您可以用withColumn現有的數據框添加列。 您定義了將您的column2轉換爲新列的udf。 你能描述一下你想要做的轉換嗎? 所以在你的情況下:

table 1 = table1.withColumn("newCol2", udf(col2))