Can one perform a left join in pandas that selects only the first match on the right? Example:
left = pd.DataFrame()
left['age'] = [11, 12]
right = pd.DataFrame()
right['age'] = [10, 11, 11]
right['salary'] = [ 100, 150, 200 ]
left.merge( right, how='left', on='age' )
Returns
age salary
0 11 150
1 11 200
2 12 NaN
But what I would like is to preserve the number of rows of left, by merely taking the first match. That is:
age salary
0 11 150
2 12 NaN
So I've been using
left.merge( right.drop_duplicates(['age']), how='left', on='age')
but I believe this makes a full copy of right. And it smells funny.
Is there a more elegant way?