2017-10-09 103 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))