title: Difference(s) between merge() and concat() in pandas
body: <p><strong>What's the essential difference(s) between <code>pd.DataFrame.merge()</code> and <code>pd.concat()</code>?</strong></p>
  
  <p>So far, this is what I found, please comment on how complete and accurate my understanding is:</p>
  
  <ul>
  <li><p><code>.merge()</code> can only use columns (plus row-indices) and it is semantically suitable for database-style operations. <code>.concat()</code> can be used with either axis, using only indices, and gives the option for adding a hierarchical index. </p></li>
  <li><p>Incidentally, this allows for the following redundancy: both can combine two dataframes using the rows indices.</p></li>
  <li><p><code>pd.DataFrame.join()</code> merely offers a shorthand for a subset of the use cases of <code>.merge()</code></p></li>
  </ul>
  
  <p>(Pandas is great at addressing a very wide spectrum of use cases in data analysis. It can be a bit daunting exploring the documentation to figure out what is the best way to perform a particular task. )</p>