Skip to content

ENH: Make categories setitem error more readable #48087

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 15, 2022
Merged

ENH: Make categories setitem error more readable #48087

merged 1 commit into from
Aug 15, 2022

Conversation

daspartho
Copy link
Contributor

@mroeschke
Copy link
Member

Thanks for the pull request. Could you show the different in traceback after this PR?

@mroeschke mroeschke added Error Reporting Incorrect or improved errors from pandas Categorical Categorical Data Type labels Aug 15, 2022
@daspartho
Copy link
Contributor Author

Before this PR

>>> import pandas as pd
>>> ps = pd.Series([1, 2, 3], dtype="category")

>>> ps[0] = 5
Traceback (most recent call last):
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/series.py", line 1085, in __setitem__
    self._set_with_engine(key, value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/series.py", line 1149, in _set_with_engine
    self._mgr.setitem_inplace(loc, value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/internals/base.py", line 190, in setitem_inplace
    arr[indexer] = value
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/arrays/_mixins.py", line 249, in __setitem__
    value = self._validate_setitem_value(value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/arrays/categorical.py", line 1457, in _validate_setitem_value
    return self._validate_scalar(value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/arrays/categorical.py", line 1484, in _validate_scalar
    raise TypeError(
TypeError: Cannot setitem on a Categorical with a new category (5), set the categories first

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/series.py", line 1140, in __setitem__
    self._set_with(key, value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/series.py", line 1167, in _set_with
    self._set_labels(key, value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/series.py", line 1179, in _set_labels
    self._set_values(indexer, value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/series.py", line 1185, in _set_values
    self._mgr = self._mgr.setitem(indexer=key, value=value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/internals/managers.py", line 337, in setitem
    return self.apply("setitem", indexer=indexer, value=value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/internals/managers.py", line 304, in apply
    applied = getattr(b, f)(**kwargs)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/internals/blocks.py", line 1604, in setitem
    self.values[indexer] = value
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/arrays/_mixins.py", line 249, in __setitem__
    value = self._validate_setitem_value(value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/arrays/categorical.py", line 1457, in _validate_setitem_value
    return self._validate_scalar(value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/arrays/categorical.py", line 1484, in _validate_scalar
    raise TypeError(
TypeError: Cannot setitem on a Categorical with a new category (5), set the categories first

After this PR

>>> ps[0] = 5
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/series.py", line 1140, in __setitem__
    self._set_with(key, value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/series.py", line 1167, in _set_with
    self._set_labels(key, value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/series.py", line 1179, in _set_labels
    self._set_values(indexer, value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/series.py", line 1185, in _set_values
    self._mgr = self._mgr.setitem(indexer=key, value=value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/internals/managers.py", line 337, in setitem
    return self.apply("setitem", indexer=indexer, value=value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/internals/managers.py", line 304, in apply
    applied = getattr(b, f)(**kwargs)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/internals/blocks.py", line 1604, in setitem
    self.values[indexer] = value
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/arrays/_mixins.py", line 249, in __setitem__
    value = self._validate_setitem_value(value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/arrays/categorical.py", line 1457, in _validate_setitem_value
    return self._validate_scalar(value)
  File "/nvme/0/pgali/envs/cudfdev/lib/python3.8/site-packages/pandas/core/arrays/categorical.py", line 1484, in _validate_scalar
    raise TypeError(
TypeError: Cannot setitem on a Categorical with a new category (5), set the categories first

@mroeschke mroeschke added this to the 1.5 milestone Aug 15, 2022
@mroeschke mroeschke merged commit 06dd5da into pandas-dev:main Aug 15, 2022
@mroeschke
Copy link
Member

Thanks @daspartho

YYYasin19 pushed a commit to YYYasin19/pandas that referenced this pull request Aug 23, 2022
noatamir pushed a commit to noatamir/pandas that referenced this pull request Nov 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Categorical Categorical Data Type Error Reporting Incorrect or improved errors from pandas
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ENH: Make categories setitem error more readable
2 participants