If statement PySpark:创建新列并根据其他两列的条件进行填充

If statement PySpark:创建新列并根据其他两列的条件进行填充,if-statement,pyspark,conditional,If Statement,Pyspark,Conditional,我有以下数据框: +---+---+------+ |id | ts |天| r| +---+---+------+ |123 | T | 32| |342 | I | 3| |349 | L | 10| +---+---+------+ 我想创建一个新列,并根据“ts”列和“days\r”列是否满足某些条件来填充值 这是我想要的数据帧: +---+---+------+----------+ |id | ts |天数| 0to2 |计数| +---+---+------+----------

我有以下数据框:

+---+---+------+
|id | ts |天| r|
+---+---+------+
|123 | T | 32|
|342 | I | 3|
|349 | L | 10|
+---+---+------+
我想创建一个新列,并根据“ts”列和“days\r”列是否满足某些条件来填充值

这是我想要的数据帧:

+---+---+------+----------+
|id | ts |天数| 0to2 |计数|
+---+---+------+----------+
|123 | T | 32 | 1|
|342 | I | 3 | 0|
|349 | L | 10 | 0|
+---+---+------+----------+
我在pyspark中尝试了以下代码:

df=df.withColumn('0to2'u count',F.when((F.col(“ts”)='I')和(F.col('days'r')>=0)和(F.col('days'r'))=0和F.col('days'r')
您的代码有一个错误-第三行缺少一组括号。以下是修复代码的方法,使用而不是使用多个
others()
语句:

df=df.withColumn(
“0to2\u计数”,

F.when((F.col(“ts”)=“I”)和(F.col(“days\u”)>=0)和(F.col(“days\u”)和(F.col(“days\u”)=0)和(F.col(“days\r”)尝试将最后一个
更改为
。否则(F.lit(0))
。此外,您不需要继续执行
。否则(当()。否则(当()))
-当
s如图所示时,您可以将多个
链接在一起,以获得快速响应;更改为F.lit(0)但不幸的是仍然出现相同的错误发现错误:行中缺少括号:
(F.col('days_r')>=0&F.col('days_r')=0)和(F.col('days_r'))