Adding keep parameter to merge method
Consider the following example:
import pandas as pd

x = pd.DataFrame({'A': [1, 2, 3], 'X': [11, 12, 13]})
y = pd.DataFrame({'A': [1, 1, 2, 2, 3, 3], 'Y': [111, 111, 222, 222, 333, 333]})

We want to extend x with column 'Y' from y, based on 'A'.  

x1 = pd.merge(x, y, how='left', on='A')

When we check the result, we see new rows coming from y when a key in 'A' occurs multiple times in y. 

It would be great to do is this way:

x1 = pd.merge(x, y, how='left', on='A', keep='first')

However, unfortunately, merge does not have this keep parameter.
So, we have to figure out a workaround:

Before we could merge x and y, duplicates based on 'A' from y must be removed.

 x1 = pd.merge(x, y.drop_duplicates(subset='A', keep='first'), on='A')

This issue generates lots of suffering for many people, who are confused because merging results in increasing number of rows.

https://stackoverflow.com/questions/37095161/number-of-rows-changes-even-after-pandas-merge-with-left-option

By implementing a feature of adding 'keep' parameter to merge, we can easily avoid increasing number of rows in our initial dataframe. 

Additional notes:

As drop_duplicates has this keep parameter, it is easy to make it backward compatible by adding 'keep' (True by default) parameter to merge. In this case it should have the same result as earlier, 

pd.merge(x, y, how='left', on='A', keep=True) == pd.merge(x, y, how='left', on='A')

Based on my ideas, keep='first' (example: pd.merge(x, y, how='left', on='A', keep='first')) would result the same as pd.merge(x, y.drop_duplicates(subset='A', keep='first'), on='A') currently, (where subset parameter of drop_duplicates is the same as on parameter of merge.