code: def when(self, condition, value):
          
          if not isinstance(condition, Column):
              raise TypeError("condition should be a Column")
          v = value._jc if isinstance(value, Column) else value
          jc = self._jc.when(condition._jc, v)
          return Column(jc)
docs: Evaluates a list of conditions and returns one of multiple possible result expressions.
          If :func:`Column.otherwise` is not invoked, None is returned for unmatched conditions.
  
          See :func:`pyspark.sql.functions.when` for example usage.
  
          :param condition: a boolean :class:`Column` expression.
          :param value: a literal value, or a :class:`Column` expression.
  
          >>> from pyspark.sql import functions as F
          >>> df.select(df.name, F.when(df.age > 4, 1).when(df.age < 3, -1).otherwise(0)).show()
          +-----+------------------------------------------------------------+
          | name|CASE WHEN (age > 4) THEN 1 WHEN (age < 3) THEN -1 ELSE 0 END|
          +-----+------------------------------------------------------------+
          |Alice|                                                          -1|
          |  Bob|                                                           1|
          +-----+------------------------------------------------------------+