title: PySpark: Add a new column with a tuple created from columns
body: <p>Here I have a dateframe created as follow,</p>
  
  <pre><code>df = spark.createDataFrame([('a',5,'R','X'),('b',7,'G','S'),('c',8,'G','S')], 
                         ["Id","V1","V2","V3"])
  </code></pre>
  
  <p>It looks like</p>
  
  <pre><code>+---+---+---+---+
  | Id| V1| V2| V3|
  +---+---+---+---+
  |  a|  5|  R|  X|
  |  b|  7|  G|  S|
  |  c|  8|  G|  S|
  +---+---+---+---+
  </code></pre>
  
  <p>I'm looking to add a column that is a tuple consisting of V1,V2,V3. </p>
  
  <p>The result should look like </p>
  
  <pre><code>+---+---+---+---+-------+
  | Id| V1| V2| V3|V_tuple|
  +---+---+---+---+-------+
  |  a|  5|  R|  X|(5,R,X)|
  |  b|  7|  G|  S|(7,G,S)|
  |  c|  8|  G|  S|(8,G,S)|
  +---+---+---+---+-------+
  </code></pre>
  
  <p>I've tried to use similar syntex as in Python but it didn't work:</p>
  
  <pre><code>df.withColumn("V_tuple",list(zip(df.V1,df.V2,df.V3)))
  </code></pre>
  
  <p>TypeError: zip argument #1 must support iteration.</p>
  
  <p>Any help would be appreciated!</p>