title: Performant cartesian product (CROSS JOIN) with pandas
body: <blockquote>
    <p>The contents of this post were originally meant to be a part of
    <a href="https://stackoverflow.com/questions/53645882/pandas-merging-101">Pandas Merging 101</a>,
    but due to the nature and size of the content required to fully do
    justice to this topic, it has been moved to its own QnA.</p>
  </blockquote>
  
  <p>Given two simple DataFrames; </p>
  
  <pre><code>left = pd.DataFrame({'col1' : ['A', 'B', 'C'], 'col2' : [1, 2, 3]})
  right = pd.DataFrame({'col1' : ['X', 'Y', 'Z'], 'col2' : [20, 30, 50]})
  
  left
  
    col1  col2
  0    A     1
  1    B     2
  2    C     3
  
  right
  
    col1  col2
  0    X    20
  1    Y    30
  2    Z    50
  </code></pre>
  
  <p>The cross product of these frames can be computed, and will look something like:</p>
  
  <pre><code>A       1      X      20
  A       1      Y      30
  A       1      Z      50
  B       2      X      20
  B       2      Y      30
  B       2      Z      50
  C       3      X      20
  C       3      Y      30
  C       3      Z      50
  </code></pre>
  
  <p>What is the most performant method of computing this result?</p>