title: merging multiple dataframes with the same columns and remove nans
body: <p>Suppose I have the following <strong>main</strong> df:</p>
  <pre><code>df = pd.DataFrame({'name':['Sara',  'John', 'Christine']})
  </code></pre>
  <p>df:</p>
  <pre><code>    name
  0   Sara
  1   John
  2   Christine
  </code></pre>
  <p>Now I have 4 other dfs with age and grade for the 3 usernames but with different NaN arrangement:</p>
  <pre><code>df2 = pd.DataFrame({'name':['Sara',  'John', 'Christine'],
  
                 'age': [26, 30, np.nan]})
  </code></pre>
  <p>df3:</p>
  <pre><code>df3 = pd.DataFrame({'name':    ['Sara',  'John', 'Christine'],
  
                     'age': [np.nan, 30, 24]})
  </code></pre>
  <p>df4:</p>
  <pre><code>df4 = pd.DataFrame({'name':    ['Sara',  'John', 'Christine'],
  
                     'grade': [np.nan, 1, 3]})
  </code></pre>
  <p>df5:</p>
  <pre><code>df5 = pd.DataFrame({'name':    ['Sara',  'John', 'Christine'],
  
                     'grade': [12, np.nan, 3]})
  </code></pre>
  <p>I want to merge the data from the 4 dataframes to the main <code>df</code> on <code>name</code> column and remove NaNs.</p>
  <p>What I did so far:</p>
  <p>Created a list of dfs:</p>
  <pre><code>dfs = [df,df2,df3,df4,df5]
  </code></pre>
  <p>used <code>reduce</code>:</p>
  <pre><code>from functools import reduce
  
  df_final = reduce(lambda left,right: pd.merge(left,right,on='name'), dfs)
  </code></pre>
  <p>df_final:</p>
  <pre><code>    name          age_x     age_y   grade_x     grade_y
  0   Sara           26.0      NaN      NaN       12.0
  1   John           30.0      30.0     1.0       NaN
  2   Christine       NaN      24.0     3.0       3.0
  </code></pre>
  <p><strong>Expected output:</strong></p>
  <p>df_final:</p>
  <pre><code>    name          age        grade
  0   Sara          26.0        12        
  1   John          30.0        1.0       
  2   Christine     24.0        3.0      
  </code></pre>