Я пытаюсь обновить некоторые строки данных, ниже мой код.
dfs_ids1 = dfs_ids1.withColumn("arrival_dt", F.when(F.col("arrival_dt")==-01-01', lit(None)) )
По сути, я хочу обновить все строки, в которых значение Arrival_dt - 1960-01-01, на ноль и оставить остальные строки без изменений .
Всего 1 ответ
Вы должны понимать filter
и when
функции.
Если вы хотите получать строки только без заботы о других, попробуйте это.
from pyspark.sql.functions import *
dfs_ids1 = dfs_ids1.filter(col("arrival_dt=-01-01'"))
Если вы хотите обновить оставшиеся с пользовательским значением или другими столбцами.
dfs_ids1=dfs_ids1.withColumn("arrival_dt",when(col("arrival_dt")=="1960-01-01",col("arrival_dt")).otherwise(lit(None)))
//Or
dfs_ids1=dfs_ids1.withColumn("arrival_dt",when(col("arrival_dt")=="1960-01-01",col("arrival_dt")))
//Sample example
//Input df
+------+-------+-----+
| name| city|state|
+------+-------+-----+
| manoj|gwalior| mp|
| kumar| delhi|delhi|
|dhakad|chennai| tn|
+------+-------+-----+
from pyspark.sql.functions import *
opOneDf=df.withColumn("name",when(col("city")=="delhi",col("city")).otherwise(lit(None)))
opOneDf.show()
//Sample output
+-----+-------+-----+
| name| city|state|
+-----+-------+-----+
| null|gwalior| mp|
|delhi| delhi|delhi|
| null|chennai| tn|
+-----+-------+-----+