ошибка index () сброса после dask categoryorize () метод - PullRequest
1 голос
/ 24 марта 2019

У меня есть панда dataframe, которую я построил после выполнения crosstab. Когда я пытаюсь выполнить reset_index (), это выдает ошибку. Сказать TypeError: cannot insert an item into a CategoricalIndex that is not already an existing category. Это случается иногда и не случается иногда. Панды dataframe были сконструированы с использованием dask .compute() после того, как некоторые переменные были классифицированы с использованием метода .categorize().

Кто-нибудь сможет сказать мне, в чем проблема и как ее исправить. У меня работает панда 0.24.2.

EDIT : Пожалуйста, найдите код ниже.

years = ['2014','2015','2016','2017','2018']
data = {'years' : years,
        'F'   : ['A', 'B', 'B', 'C', 'C'],
        'M'   : ['A', 'A', 'A', 'B', 'C']}

data = pd.DataFrame.from_dict(data)
data  = dd.from_pandas(data,npartitions =2)
data = data.categorize(columns = ['M','F'])
CAM = data['M'].compute()
G = data['F'].compute()
mg = pd.crosstab(G,CAM)
mg = mg.reset_index()

Ошибка ниже:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-80-049481fd2564> in <module>
----> 1 mg = mg.reset_index()
      2 mg

~/env/lib/python3.5/site-packages/pandas/core/frame.py in reset_index(self, level, drop, inplace, col_level, col_fill)
   4429                 # to ndarray and maybe infer different dtype
   4430                 level_values = _maybe_casted_values(lev, lab)
-> 4431                 new_obj.insert(0, name, level_values)
   4432 
   4433         new_obj.index = new_index

~/env/lib/python3.5/site-packages/pandas/core/frame.py in insert(self, loc, column, value, allow_duplicates)
   3471         value = self._sanitize_column(column, value, broadcast=False)
   3472         self._data.insert(loc, column, value,
-> 3473                           allow_duplicates=allow_duplicates)
   3474 
   3475     def assign(self, **kwargs):

~/env/lib/python3.5/site-packages/pandas/core/internals/managers.py in insert(self, loc, item, value, allow_duplicates)
   1153 
   1154         # insert to the axis; this could possibly raise a TypeError
-> 1155         new_axis = self.items.insert(loc, item)
   1156 
   1157         block = make_block(values=value, ndim=self.ndim,

~/env/lib/python3.5/site-packages/pandas/core/indexes/category.py in insert(self, loc, item)
    765         code = self.categories.get_indexer([item])
    766         if (code == -1) and not (is_scalar(item) and isna(item)):
--> 767             raise TypeError("cannot insert an item into a CategoricalIndex "
    768                             "that is not already an existing category")
    769 

TypeError: cannot insert an item into a CategoricalIndex that is not already an existing category

Надеюсь, это поможет.

Спасибо

Michael

...