title: How to pass keyword arguments in reduce over Pandas merge function
body: <p>I have the following list of data frames: </p>
  
  <pre><code>import pandas as pd
  rep1 = pd.DataFrame.from_items([('Probe', ['x', 'y', 'z']), ('Gene', ['foo', 'bar', 'qux']), ('RP1',[1.00,23.22,11.12])], orient='columns')
  rep2 = pd.DataFrame.from_items([('Probe', ['x', 'y', 'w']), ('Gene', ['foo', 'bar', 'wux']), ('RP2',[11.33,31.25,22.12])], orient='columns')
  rep3 = pd.DataFrame.from_items([('Probe', ['x', 'y', 'z']), ('Gene', ['foo', 'bar', 'qux'])], orient='columns')
  
  tmp = []
  tmp.append(rep1)
  tmp.append(rep2)
  tmp.append(rep3)
  </code></pre>
  
  <p>With this list output:</p>
  
  <pre><code>In [35]: tmp
  Out[35]:
  [  Probe Gene    RP1
   0     x  foo   1.00
   1     y  bar  23.22
   2     z  qux  11.12,   Probe Gene    RP2
   0     x  foo  11.33
   1     y  bar  31.25
   2     w  wux  22.12,   Probe Gene
   0     x  foo
   1     y  bar
   2     z  qux]
  </code></pre>
  
  <p>Note the following:</p>
  
  <ul>
  <li>Each DF will contain 3 columns, but last column could have different names</li>
  <li><code>rep3</code> contain no value at 3rd column we'd like to discard it automatically</li>
  <li>The row <code>w wux</code> only exist in <code>rep2</code>, we'd like to include that and give the value 0 for other data frame that doesn't contain it.  </li>
  </ul>
  
  <p>What I want to do is to perform outer merge so that it produce the following result:</p>
  
  <pre><code>  Probe Gene      RP1        RP2
  0     x  foo     1.00      11.33
  1     y  bar    23.22      31.25
  2     z  qux    11.12      22.12
  3     w  wux    22.12      0    
  </code></pre>
  
  <p>I tried this but doesn't work</p>
  
  <pre><code>In [25]: reduce(pd.merge,how="outer",tmp)
    File "&lt;ipython-input-25-1b2a5f2dd378&gt;", line 1
      reduce(pd.merge,how="outer",tmp)
  SyntaxError: non-keyword arg after keyword arg
  </code></pre>
  
  <p>What's the right way to do it?</p>