ENH:
#### Is your feature request related to a problem?

I would like to apply `map` to some columns and not others. 

Then, I could apply dataframe methods to the resulting dataframe.

For example,

```
# Apply map to column "cat" and compute correlations on the resulting dataframe
df.map({'cat': {'n': 0, 'y': 1}}).corr()
```

#### Describe the solution you'd like

Add a `map` method that is an extension of the `Series.map` method, except that, here, a nested dictionary is specified -- the key(s) of the first level of the dictionary specify the column names of the dataframe.

Example dataframe:
``` py
df = pd.DataFrame({
    'num': [10, 10, 20, 20],
    'cat': list('ynyn'),
    'res': [42.3, 88.4, 64.8, 124.9],
})
```

Would like to do this:
``` py
df.map({'cat': {'n': 0, 'y': 1}})
```

This would return:
``` py
   num  cat    res
0   10    1   42.3
1   10    0   88.4
2   20    1   64.8
3   20    0  124.9
```

So that I can do
``` py
df.map({'cat': {'n': 0, 'y': 1}}).corr()
```

Which would result in:
``` py
         num      cat      res
num  1.00000  0.00000  0.48245
cat  0.00000  1.00000 -0.86841
res  0.48245 -0.86841  1.00000
```

The method could instead be named `colmap` to avoid confusion with `applymap`.

#### API breaking implications

Since this is a new method for DataFrame, I don't think this should break API.

One other point of consideration: the `applymap` method which maps every element may be confusing.  At a future date, `applymap` could be renamed to `mapelem` or something and/or the method requested in this ticket could be named `colmap` or something.

#### Describe alternatives you've considered

Current workaround:

Right now, I can create a new dataframe and take three steps to do what I would want to do in one:

``` py
df1 = df.copy()
df1['cat'] = df1['cat'].map({'n': 0, 'y': 1})
df1.corr()
```
