带有where条件的Spark update dataframe

2024-04-27 04:17:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Spark中有2个数据帧(PySpark)

DF_A
col1    col2    col3
a        1      100
b        2      300
c        3      500
d        4      700
^{pr2}$

我想用DF_B.col3值更新DF A的列。在

目前我正在做

df_new = df_a.join(df_b, df_a.col1 == df_b.col1,'inner')

它给了我1×2倍和3×2倍的能量。 现在我必须去掉不相关的单元格来显示0。有什么更好的方法?不使用自定义项。在


Tags: 数据方法dfnewsparkpysparkcol2col3
1条回答
网友
1楼 · 发布于 2024-04-27 04:17:36

如果我正确理解您的问题,您正在尝试执行以下操作:

更新dataframe上的table_a a,table_b SET a.col3=b.col3,其中a.col1=b.col1。如果B中不存在,则0。(参考评论)

a = [("a",1,100),("b",2,300),("c",3,500),("d",4,700)]
b = [("a",150),("b",350),("d",650)]
df_a = spark.createDataFrame(a,["col1","col2","col3"])   
df_b = spark.createDataFrame(b,["col1","col3"])

df_a.show()
# +  +  +  +
# |col1|col2|col3|
# +  +  +  +
# |   a|   1| 100|
# |   b|   2| 300|
# |   c|   3| 500|
# |   d|   4| 700|
# +  +  +  +

df_b.show() # I have removed an entry for the purpose of the demo.
# +  +  +
# |col1|col3|
# +  +  +
# |   a| 150|
# |   b| 350|
# |   d| 650|
# +  +  +

您需要执行outer join,然后执行coalesce

^{pr2}$

相关问题 更多 >