BUG: get_group fails when multi-grouping with a categorical by evanpw · Pull Request #10132 · pandas-dev/pandas (original) (raw)
>>> df = pd.DataFrame({'a' : pd.Categorical('xyxy'), 'b' : 1, 'c' : 2})
>>> df.groupby(['a', 'b']).get_group(('x', 1))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/evanpw/Workspace/pandas/pandas/core/groupby.py", line 601, in get_group
inds = self._get_index(name)
File "/home/evanpw/Workspace/pandas/pandas/core/groupby.py", line 429, in _get_index
sample = next(iter(self.indices))
File "/home/evanpw/Workspace/pandas/pandas/core/groupby.py", line 414, in indices
return self.grouper.indices
File "pandas/src/properties.pyx", line 34, in pandas.lib.cache_readonly.__get__ (pandas/lib.c:41912)
File "/home/evanpw/Workspace/pandas/pandas/core/groupby.py", line 1305, in indices
return _get_indices_dict(label_list, keys)
File "/home/evanpw/Workspace/pandas/pandas/core/groupby.py", line 3762, in _get_indices_dict
return lib.indices_fast(sorter, group_index, keys, sorted_labels)
File "pandas/lib.pyx", line 1385, in pandas.lib.indices_fast (pandas/lib.c:23843)
TypeError: Cannot convert Categorical to numpy.ndarray
The problem is that Grouping.group_index is a CategoricalIndex, so calling get_values() gives you a Categorical, which needs one more application of get_values() to get an ndarray