Skip to content

pd.Categorical.contains([item, otheritem]) raises ValueError #21729

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

Closed
toobaz opened this issue Jul 4, 2018 · 0 comments · Fixed by #27284
Closed

pd.Categorical.contains([item, otheritem]) raises ValueError #21729

toobaz opened this issue Jul 4, 2018 · 0 comments · Fixed by #27284
Labels
Categorical Categorical Data Type Error Reporting Incorrect or improved errors from pandas Index Related to the Index class or subclasses
Milestone

Comments

@toobaz
Copy link
Member

toobaz commented Jul 4, 2018

Code Sample, a copy-pastable example if possible

In [2]: idx = pd.CategoricalIndex([1, 2, 3])

In [3]: list('a') in idx
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-76f69ba8dbb9> in <module>()
----> 1 list('a') in idx

/home/nobackup/repo/pandas/pandas/core/indexes/category.py in __contains__(self, key)
    327             return self.hasnans
    328 
--> 329         return contains(self, key, container=self._engine)
    330 
    331     @Appender(_index_shared_docs['contains'] % _index_doc_kwargs)

/home/nobackup/repo/pandas/pandas/core/arrays/categorical.py in contains(cat, key, container)
    187     before calling this method.
    188     """
--> 189     hash(key)
    190 
    191     # get location of key in categories.

TypeError: unhashable type: 'list'

In [4]: list('ab') in idx
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-4-0b6b309a5156> in <module>()
----> 1 list('ab') in idx

/home/nobackup/repo/pandas/pandas/core/indexes/category.py in __contains__(self, key)
    324     def __contains__(self, key):
    325         # if key is a NaN, check if any NaN is in self.
--> 326         if isna(key):
    327             return self.hasnans
    328 

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Problem description

This is the only case, to the best of my (very limited - I didn't investigate much) knowledge, in which the contains method of an index raises anything different from TypeError: unhashable type:....

xref #21313

Expected Output

TypeError: unhashable type: 'list'

Output of pd.show_versions()

INSTALLED VERSIONS

commit: 2b13605
python: 3.5.3.final.0
python-bits: 64
OS: Linux
OS-release: 4.9.0-6-amd64
machine: x86_64
processor:
byteorder: little
LC_ALL: None
LANG: it_IT.UTF-8
LOCALE: it_IT.UTF-8

pandas: 0.24.0.dev0+216.g2b136054d
pytest: 3.5.0
pip: 9.0.1
setuptools: 39.2.0
Cython: 0.25.2
numpy: 1.14.3
scipy: 0.19.0
pyarrow: None
xarray: None
IPython: 6.2.1
sphinx: 1.5.6
patsy: 0.5.0
dateutil: 2.7.3
pytz: 2018.4
blosc: None
bottleneck: 1.2.0dev
tables: 3.3.0
numexpr: 2.6.1
feather: 0.3.1
matplotlib: 2.2.2.post1153+gff6786446
openpyxl: 2.3.0
xlrd: 1.0.0
xlwt: 1.3.0
xlsxwriter: 0.9.6
lxml: 4.1.1
bs4: 4.5.3
html5lib: 0.999999999
sqlalchemy: 1.0.15
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: 0.2.1
gcsfs: None

@toobaz toobaz added Indexing Related to indexing on series/frames, not to indexes themselves Error Reporting Incorrect or improved errors from pandas Categorical Categorical Data Type labels Jul 4, 2018
@toobaz toobaz added Index Related to the Index class or subclasses and removed Indexing Related to indexing on series/frames, not to indexes themselves labels Jun 29, 2019
@jreback jreback added this to the 0.25.0 milestone Jul 8, 2019
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 Index Related to the Index class or subclasses
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants