2017-06-29 71 views
0

如何使用where子句更新Pyspark数据框中的列?在Pyspark中使用where子句的更新列

这是类似于此的SQL操作:

UPDATE table1 SET alpha1= x WHERE alpha2< 6; 

其中α1和α2是表1的列。

对于如: 我有以下值的数据帧表1:

 
table1 

alpha1 alpha2 
3   7 
4   5 
5   4 
6   8 

dataframe Table1 after update : 

alpha1 alpha2 
3   7 
x   5 
x   4 
6   8 

如何pyspark数据帧做到这一点?

回答

2

您正在寻找when功能:

df = spark.createDataFrame([("3",7),("4",5),("5",4),("6",8)],["alpha1", "alpha2"]) 
df.show() 
>>> +------+------+ 
>>> |alpha1|alpha2| 
>>> +------+------+ 
>>> |  3|  7| 
>>> |  4|  5| 
>>> |  5|  4| 
>>> |  6|  8| 
>>> +------+------+ 

df2 = df.withColumn("alpha1", pyspark.sql.functions.when(df["alpha2"] < 6, "x").otherwise(df["alpha1"])) 
df2.show() 
>>>+------+------+ 
>>>|alpha1|alpha2| 
>>>+------+------+ 
>>>|  3|  7| 
>>>|  x|  5| 
>>>|  x|  4| 
>>>|  6|  8| 
>>>+------+------+ 
+0

这是否会覆盖现有的列? – Viv

+0

它将创建一个新的数据框,其中列更新。如果你想要一个新的专栏而不是使用不同的名字 –