Take the following sample dataframe:
df = pd.DataFrame([['00100', 'Alpha', None],
                   ['00100', 'Beta', None],
                   ['05300', 'Theta', None],
                   ['95687', 'Gamma', None],
                   ['05300', 'Sigma', None]])
Which looks like
       0      1     2
0  00100  Alpha  None
1  00100   Beta  None
2  05300  Theta  None
3  95687  Gamma  None
4  05300  Sigma  None
I have a dictionary which maps the values for column 2 depending on the column 0:
match = {
    '00100' : '09010',
    '05300' : '09004'
}
I want to change the values in column 2 depending in the value from column 0. The end result I expect after matching the dict to the dataframe would be:
       0      1      2
0  00100  Alpha  09010
1  00100   Beta  09010
2  05300  Theta   None
3  95687  Gamma  09004
4  05300  Sigma  09004
At first I thought that I could make an .apply function or a for loop using .loc in the following fashion:
df.loc[df[0] == match[key]][2] = match[value]
But this raises an exception:
"A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead"
Which I can't seem to understand how to apply for this particular case.
I am using: Python 3.6.1 Pandas 0.20.1