Pandas corr() vs corrwith()
The first one computes correlation with another dataframe:

between rows or columns of two DataFrame objects

The second one computes it with itself

Compute pairwise correlation of columns
What is the reason of Pandas to provide two different correlation functions?

DataFrame.corrwith(other, axis=0, drop=False): 
  Correlation between rows or columns of two DataFrame objectsCompute pairwise

vs.

DataFrame.corr(method='pearson', min_periods=1): Compute pairwise
  correlation of columns, excluding NA/null values

(from pandas 0.20.3 documentation)