Applymap works fine. You only have three ID2 values that have two entries in your mapping table. That's an error because it's impossible to determine which of the two values should be applied. Applymap uses only the first and ignores all others. You may not agree with that logic, but that's the way it works I'm afraid. You'll have to think up some way to make the ID2 values unique.
I think in this case Map (ApplyMap) is wrong function to use.
Just think of ApplyMap as Vlookup in excel, VLookup a id and return first found value (meaning, if you have duplicate Salesperson and different SalesValue, Vlookup will pick up the first value and ignore the sceond). By default DISTINCT is applied.
I will think of another function that might help or you can thik of another function as well