Python 在PySpark中使用或折叠逻辑

Python 在PySpark中使用或折叠逻辑,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我试图在PySpark中结合此代码段的逻辑,以减少代码重复。如有任何指导,我们将不胜感激: col0 = when(visit[1] == '0', to_date(visit[0])).otherwise(None) col1 = when(visit[1] == '1', to_date(visit[0])).otherwise(None) col={i:when(访问[1]==f'{i},截止日期(访问[0])。否则(1,2)中的col(无)} 注意:对于2列,您只获得一行,但主观代码清

我试图在PySpark中结合此代码段的逻辑,以减少代码重复。如有任何指导,我们将不胜感激:

col0 = when(visit[1] == '0', to_date(visit[0])).otherwise(None)
col1 = when(visit[1] == '1', to_date(visit[0])).otherwise(None)
col={i:when(访问[1]==f'{i},截止日期(访问[0])。否则(1,2)中的col(无)}


注意:对于2列,您只获得一行,但主观代码清晰度方面的额外成本远远超过了增益;建议的解决方案可能只适用于3+列

您可以使用解构赋值和生成器表达式:

col0,col1=(何时(访问[1]==c,截止日期(访问[0]))。否则,'01'中的c为(无))

没错,在这种简单的情况下,
str(i)
甚至更好。好吧,你还没有给出答案,所以我无法测试它。具体是什么问题?抱歉,这是一个语法问题。谢谢你能解释一下为什么
01
以字符串形式出现吗?哦,没问题。在Python中迭代字符串时,可以将单个字符作为字符串。这只是在('0','1')中对c执行
的一种较短方法。