BUG: loc dropping levels when df has only one row
- [x] closes #10521
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Originally this case was dispatched to xs, which dispatched to ``_get_loc_level``, which raised if a slice is not ``slice(None, None)`` and went back to our original function. If the ``DataFrame`` contains only one row, ``_get_loc_level`` does not raise and hence we drop levels. 

I added len(self.obj) for performance reasons becasue I am not sure if the any check for slices is faster than supressing the IndexingError in general.