【发布时间】:2020-12-08 10:46:21
【问题描述】:
我编写了一个 PySpark 代码来设置条件,如果给定列中存在空值,则它将“是”附加到另一列,否则为“否”
data = data.withColumn('Coupon_code',when((data.coupon ==""),"No coupon").otherwise("coupon"))
这里的条件是在“优惠券”列上,如果“优惠券”列中有空值,那么它会在 Coupon_code 列中附加“无优惠券”,否则在“优惠券”列中附加“优惠券”
上述逻辑的问题是它没有检测空值并用“优惠券”填充每个条目
我尝试使用 isnull() 和 subset 但无济于事
data = data.withColumn('Coupon_code',when(data.fillna("No coupon", subset["coupon"])).otherwise("coupon"))
for is null() 我收到column is not callable 的错误。请提出我哪里出错了。
样本数据:
I/P:
Coupon
null
null
null
null
H45X
E4R
null
预期 o/p:
Coupon Coupon_code
null No Coupon
null No Coupon
null No Coupon
null No Coupon
H45X coupon
E4R coupon
null No Coupon
即使计数有效,但替换它时无法复制。
data.where(col("coupon").isNull()).count()
output: 9064
【问题讨论】:
-
请发布示例数据
-
您确定缺失值是空字符串 ("") 而不是例如空格 (" ")?
-
@LiamGalbraith 是的,这些是空字符串。都是空/无数据类型
-
'coupon' 列的 dtype 是字符串
标签: python pandas apache-spark pyspark apache-spark-sql