title: Efficient way to unnest (explode) multiple list columns in a pandas DataFrame
body: <p>I am reading multiple JSON objects into one DataFrame. The problem is that some of the columns are lists. Also, the data is very big and because of that I cannot use the available solutions on the internet. They are very slow and memory-inefficient </p>
  
  <p>Here is how my data looks like:</p>
  
  <pre><code>df = pd.DataFrame({'A': ['x1','x2','x3', 'x4'], 'B':[['v1','v2'],['v3','v4'],['v5','v6'],['v7','v8']], 'C':[['c1','c2'],['c3','c4'],['c5','c6'],['c7','c8']],'D':[['d1','d2'],['d3','d4'],['d5','d6'],['d7','d8']], 'E':[['e1','e2'],['e3','e4'],['e5','e6'],['e7','e8']]})
      A       B          C           D           E
  0   x1  [v1, v2]    [c1, c2]    [d1, d2]    [e1, e2]
  1   x2  [v3, v4]    [c3, c4]    [d3, d4]    [e3, e4]
  2   x3  [v5, v6]    [c5, c6]    [d5, d6]    [e5, e6]
  3   x4  [v7, v8]    [c7, c8]    [d7, d8]    [e7, e8]
  </code></pre>
  
  <p>And this is the shape of my data: (441079, 12)</p>
  
  <p>My desired output is:</p>
  
  <pre><code>    A       B          C           D           E
  0   x1      v1         c1         d1          e1
  0   x1      v2         c2         d2          e2
  1   x2      v3         c3         d3          e3
  1   x2      v4         c4         d4          e4
  .....
  </code></pre>
  
  <p>EDIT: After being marked as duplicate, I would like to stress on the fact that in this question I was looking for an <em>efficient</em> method of exploding multiple columns. Therefore the approved answer is able to explode an arbitrary number of columns on very large datasets efficiently. Something that the answers to the other question failed to do (and that was the reason I asked this question after testing those solutions).</p>