修改/更新 pyspark 列值

Posted

技术标签:

【中文标题】修改/更新 pyspark 列值【英文标题】:Modify/Update pyspark colum values 【发布时间】:2020-05-12 06:52:54 【问题描述】:

我想修改列值如下。 如果列值为“BALL-KG”,我想将该值修改为“BALL”,否则,列值保持不变 输入列:

Name      Product
John      PIPE
Hema      BALL-KG
Basha     BALL-KG
Hari      BALL
Bijju     BAG

输出:

Name      Product
John      PIPE
Hema      BALL
Basha     BALL
Hari      BALL
Bijju     BAG

谢谢。

【问题讨论】:

与Pyspark replace strings in Spark dataframe column和replace values of one column in a spark df by dictionary key-values (pyspark)相关 一个简单的 when/otherwise 子句就足够了,我认为这个问题缺乏研究,但你去df.withColumn("Product", F.when(F.col("Product")=="BALL-KG",F.lit("BALL")).otherwise(F.col("Product"))) 【参考方案1】:

尝试,假设df 是您的输入数据框:

Import PySpark.sql.functions as F

df=df.select(F.col("Name"), F.when(F.col("Product")==F.lit("BALL-KG"), F.lit("BALL")).otherwise(F.col("Product")).alias("Product"))
F.when(<condition>, <option_if_met>).otherwise (<if_not_met>)

它是 PySpark 中的 if else 语法

【讨论】:

老实说 - 我从来没有将它用于lit,我总是单独导入它,但你是对的 - 写这篇文章我确实需要它。谢谢!

以上是关于修改/更新 pyspark 列值的主要内容,如果未能解决你的问题,请参考以下文章

PySpark DataFrame 根据另一列中时间戳值的最小/最大条件更新列值

pyspark MlLib:排除一行中的列值

python, pyspark : 获取 pyspark 数据框列值的总和

RDD 只有第一列值:Hbase,PySpark

Pyspark循环遍历数据框并减少列值

识别 pyspark 中第一次出现的列值,然后根据它增加另一列