left_on is the name of the column (or of the index level, but in our case it’s a column) in the left dataframe on which we join,
right_on - in the right one. In other words, when merging, Python is taking each value from the column assigned as
left_on in the left dataframe and is looking for the same value in the column assigned as
right_on in the right dataframe. And if it finds the same value in the right dataframes, it merges these rows.
In this case we have also
how='left'. Hence, if Python doesn’t find a corresponding value in the right dataframe, it preserves the row with that value from the left dataframe anyway, and adds all the missing values as NaN.