PySpark DataFrame withColumn multiple when 条件

标签 pyspark apache-spark-sql

如何在多个 when 条件下实现以下目标。

from pyspark.sql import functions as F
df = spark.createDataFrame([(5000, 'US'),(2500, 'IN'),(4500, 'AU'),(4500, 'NZ')],["Sales", "Region"])
df.withColumn('Commision', 
              F.when(F.col('Region')=='US',F.col('Sales')*0.05).\
              F.when(F.col('Region')=='IN',F.col('Sales')*0.04).\
              F.when(F.col('Region')in ('AU','NZ'),F.col('Sales')*0.04).\
              otherwise(F.col('Sales'))).show()

最佳答案

when之后使用otherwise:

df.withColumn('Commision',
              F.when(F.col('Region') == 'US', F.col('Sales') * 0.05).otherwise(
                F.when(F.col('Region') == 'IN', F.col('Sales') * 0.04).otherwise(
                    F.when(F.col('Region').isin('AU', 'NZ'), F.col('Sales') * 0.04).otherwise(
                        F.col('Sales'))))).show()

+-----+------+---------+
|Sales|Region|Commision|
+-----+------+---------+
| 5000|    US|    250.0|
| 2500|    IN|    100.0|
| 4500|    AU|    180.0|
| 4500|    NZ|    180.0|
+-----+------+---------+

关于PySpark DataFrame withColumn multiple when 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61926454/

相关文章:

apache-spark - 带有Java 10的org.apache.xbean.asm5.ClassReader。<init>(未知源)上的java.lang.IllegalArgumentException

scala - 如何在 Apache Spark 2.3.1 中映射/转换 ArrayType 中的每个元素

apache-spark - Spark Parquet 装载机 : Reduce number of jobs involved in listing a dataframe's files

apache-spark - Apache Spark 用户推荐?

java - 如何以编程方式在执行程序节点中查找 Spark 版本?

apache-spark - 从pyspark中的数据框ArrayType列中获取前N个元素

apache-spark - 分组数据的 Spark 并行处理

apache-spark - Zeppelin notebook 执行不是手动的

python - 在 PySpark 中使用 'window' 函数按天分组时出现问题

apache-spark - 从AWS S3读取pyspark文件不起作用