dataframe.query() select columns
#### 
In function query@pandas/core/frame.py 

I found dataframe return eval result, and use self.loc to return new dataframe, and I curious about in which situation dataframe.loc will raise ValueError.

```python
        inplace = validate_bool_kwarg(inplace, 'inplace')
        if not isinstance(expr, compat.string_types):
            msg = "expr must be a string to be evaluated, {0} given"
            raise ValueError(msg.format(type(expr)))
        kwargs['level'] = kwargs.pop('level', 0) + 1
        kwargs['target'] = None
        res = self.eval(expr, **kwargs)

        try:
            new_data = self.loc[res]
        except ValueError:
            # when res is multi-dimensional loc raises, but this is sometimes a
            # valid query
            new_data = self[res]

        if inplace:
            self._update_inplace(new_data)
        else:
            return new_data
```
#### Problem description

Because I use Dataframe.query() as data_model api, and I wanna select columns from this api, so I do some googling, found nothing. After read code of query, I found interesting fragment in function query. If loc raise Exception, select column instead. BUT, it catch ValueError, not KeyError. 

#### Version

<details>
 In current pandas version query@pandas/core/frame.py  ( https://github.com/pandas-dev/pandas/commit/20fda2223d5121be3f8204702b5ce1e6037e5b18)
</details>
