2
import numpy as np 

df = spark.createDataFrame(
    [(1, 1, None), (1, 2, float(5)), (1, 3, np.nan), (1, 4, None), (0, 5, float(10)), (1, 6, float('nan')), (0, 6, float('nan'))], 
    ('session', "timestamp1", "id2")) 

+-------+----------+----+ 
|session|timestamp1| id2| 
+-------+----------+----+ 
|  1|   1|null| 
|  1|   2| 5.0| 
|  1|   3| NaN| 
|  1|   4|null| 
|  0|   5|10.0| 
|  1|   6| NaN| 
|  0|   6| NaN| 
+-------+----------+----+ 

セッション== 0の場合、timestamp1列の値を値999に置き換えるにはどうすればよいですか?Pysparkの別の列に基づく式の評価に基づいて条件付きで列の値を置き換える方法は?

の予想される出力

+-------+----------+----+ 
|session|timestamp1| id2| 
+-------+----------+----+ 
|  1|   1|null| 
|  1|   2| 5.0| 
|  1|   3| NaN| 
|  1|   4|null| 
|  0|   999|10.0| 
|  1|   6| NaN| 
|  0|   999| NaN| 
+-------+----------+----+ 

それはpysparkに()置き換える使用して行うことは可能ですか?

答えて

7

あなたはwhenotherwise付き)関数を使用する必要があります:

from pyspark.sql.functions import when 

targetDf = df.withColumn("timestamp1", \ 
       when(df["session"] == 0, 999).otherwise(df["timestamp1"])) 
関連する問題