如何将Pandas指定过滤逻辑转换为PySpark实现?
PySpark实现指定条件下的列值替换
你要转换的Pandas代码逻辑是:当列A的值等于1时,将列B的对应值设为NaN。在PySpark中可以通过以下方式实现:
方法一:使用when/otherwise(推荐)
通过withColumn结合条件函数when和otherwise来替换列值:
from pyspark.sql import functions as F # 替换B列:当A=1时设为Null,否则保留原B值 df = df.withColumn("B", F.when(F.col("A") == 1, F.lit(None)).otherwise(F.col("B")))
方法二:使用selectExpr
通过SQL风格的CASE表达式实现相同逻辑:
# 直接在select中替换B列 df = df.selectExpr( "*", # 保留所有原有列 "CASE WHEN A = 1 THEN NULL ELSE B END AS new_B" ).drop("B").withColumnRenamed("new_B", "B")
说明
PySpark中的F.lit(None)对应Pandas的np.NaN,都会被识别为缺失值,两者在数据处理逻辑上等价。
内容的提问来源于stack exchange,提问作者Joel AMEDON
相关产品推荐
相关产品推荐

