Dat*_*101 2 apache-spark pyspark pyspark-sql databricks
我有一个数据框(df),并且在该数据框内有一列user_id
df = sc.parallelize([(1, "not_set"),
(2, "user_001"),
(3, "user_002"),
(4, "n/a"),
(5, "N/A"),
(6, "userid_not_set"),
(7, "user_003"),
(8, "user_004")]).toDF(["key", "user_id"])
Run Code Online (Sandbox Code Playgroud)
df:
+---+--------------+
|key| user_id|
+---+--------------+
| 1| not_set|
| 2| user_003|
| 3| user_004|
| 4| n/a|
| 5| N/A|
| 6|userid_not_set|
| 7| user_003|
| 8| user_004|
+---+--------------+
Run Code Online (Sandbox Code Playgroud)
我想用空值替换以下值:not_set,n / a,N / A和userid_not_set。
如果我可以将任何新值添加到列表中并且可以更改它们,那将是很好的。
我目前在spark.sql中使用CASE语句来执行此操作,并希望将其更改为pyspark。
Nonewhen()函数内部对应null。如果您希望填写其他内容而不是null,则必须在该位置填写。
from pyspark.sql.functions import col
df = df.withColumn(
"user_id",
when(
col("user_id").isin('not_set', 'n/a', 'N/A', 'userid_not_set'),
None
).otherwise(col("user_id"))
)
df.show()
+---+--------+
|key| user_id|
+---+--------+
| 1| null|
| 2|user_001|
| 3|user_002|
| 4| null|
| 5| null|
| 6| null|
| 7|user_003|
| 8|user_004|
+---+--------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1400 次 |
| 最近记录: |