Как обновить строки в кадре данных на основе условия - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь обновить некоторые строки данных, ниже мой код.

dfs_ids1 = dfs_ids1.withColumn("arrival_dt", F.when(F.col("arrival_dt")=='1960-01-01', lit(None)) )

По сути, я хочу обновить все строки, где прибытие_дт равно 1960-01-01 с ноль и оставьте остальные строки без изменений .

1 Ответ

0 голосов
/ 11 февраля 2020

Вы должны понимать функции filter и when.

Если вы хотите получать строки только без заботы о других, попробуйте это.

from pyspark.sql.functions import *

dfs_ids1 = dfs_ids1.filter(col("arrival_dt='1960-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|
+-----+-------+-----+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...