如何在Palantir Foundry的Pyspark中实现VBA的Select Case分支逻辑
Pyspark 等价实现代码
你给出的VBA Select Case逻辑是对dMinutes做区间映射生成xnum字段,直接用Pyspark内置的when+otherwise分支函数即可实现,逻辑完全对齐:
第一步:导入依赖函数
from pyspark.sql import functions as F
第二步:给DataFrame新增xnum列
假设你待处理的数据集名为df,且已存在dMinutes字段,写法如下:
df = df.withColumn( "xnum", # 对应Case 0 To 30 F.when(F.col("dMinutes").between(0, 30), 1) # 对应Case 31 To 60 .when(F.col("dMinutes").between(31, 60), 2) # 对应Case 61 To 90 .when(F.col("dMinutes").between(61, 90), 3) # 对应Case 91 To 120 .when(F.col("dMinutes").between(91, 120), 4) # 对应Case Else .otherwise(5) )
逻辑说明
Pyspark的between函数是左右都包含的闭区间,和VBA中To的区间判断逻辑完全一致,分支判断顺序也和原VBA代码的匹配顺序相同,不会出现逻辑偏差。如果是对单个变量做判断,直接用Python原生的if...elif...else结构即可,处理分布式数据集时优先用上述内置函数写法,性能更高。
内容的提问来源于stack exchange,提问作者confused101
相关产品推荐
相关产品推荐

