์:
import pandas as pd
df = pd.DataFrame([[{'a', 'b'}], [{'b','c'}], [{'b', 'a'}]])
df
๋ฐ:
0
0 {a, b}
1 {c, b}
2 {a, b}
์:
df.duplicated()
๋ฐ:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-77-7cc63ba1ed41> in <module>()
----> 1 df.duplicated()
venv/lib/python3.5/site-packages/pandas/util/decorators.py in wrapper(*args, **kwargs)
89 else:
90 kwargs[new_arg_name] = new_arg_value
---> 91 return func(*args, **kwargs)
92 return wrapper
93 return _deprecate_kwarg
venv/lib/python3.5/site-packages/pandas/core/frame.py in duplicated(self, subset, keep)
3100
3101 vals = (self[col].values for col in subset)
-> 3102 labels, shape = map(list, zip(*map(f, vals)))
3103
3104 ids = get_group_index(labels, shape, sort=False, xnull=False)
TypeError: type object argument after * must be a sequence, not map
๋๋ ๊ธฐ๋:
0 False
1 False
2 True
dtype: bool
pd.show_versions()
์ถ๋ ฅ:
INSTALLED VERSIONS
------------------
commit: None
python: 3.5.1.final.0
python-bits: 64
OS: Linux
OS-release: 4.3.0-1-amd64
machine: x86_64
processor:
byteorder: little
LC_ALL: None
LANG: ru_RU.UTF-8
pandas: 0.18.0
nose: None
pip: 1.5.6
setuptools: 18.8
Cython: None
numpy: 1.10.4
scipy: None
statsmodels: None
xarray: None
IPython: 4.1.2
sphinx: None
patsy: None
dateutil: 2.5.1
pytz: 2016.1
blosc: None
bottleneck: None
tables: None
numexpr: None
matplotlib: 1.5.1
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: 0.999
httplib2: None
apiclient: None
sqlalchemy: 1.0.12
pymysql: None
psycopg2: 2.6.1 (dt dec pq3 ext lo64)
jinja2: 2.8
boto: None
๋๋ ์ถ์ธกํ๋ค. ํ๋ ์์ ์ ๋ด๋ถ์์ ๋ชฉ๋ก๊ณผ ๊ฐ์ ๊ฐ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ๋นํจ์จ์ ์ด๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ง์๋์ง ์์ต๋๋ค. pull-request๋ ์ด๋ค ๊ฒฝ์ฐ์๋ ์์ ์ ์๋ฝํฉ๋๋ค.
ํ์ฌ pandas๋ ์ฝ๊ฐ ๋ค๋ฅธ TypeError( TypeError: unhashable type: 'set'
)๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์์ ์ ๋๋ฌํฉ๋๋ค. ์งํฉ์ด๋ ๋ชฉ๋ก์ ์ด๋ป๊ฒ ์ค๋ณต ์ ๊ฑฐํ ๊น์? ํํ ๋ฐ ๊ธฐ๋ณธ ์ ํ๊ณผ ๋ฌ๋ฆฌ ์ด๋ค์ ํด์ ๊ฐ๋ฅํ์ง ์์ผ๋ฏ๋ก(์ธํธ๋ฅผ ํด์ ๊ฐ๋ฅํ frozenset์ผ๋ก ๋ณํํ ์ ์์) ์ค๋ณต ์ ๊ฑฐ ์ ๋ต์ ๋ง๋ จํด์ผ ํฉ๋๋ค.
์ด๋ค ๊ฒฝ์ฐ๋ dtype ๊ฐ์ฒด๋ฅผ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ๋ค์ ํ์ ์งํฉ์ด๋ ๋ชฉ๋ก์ด ํฌํจ๋์ง ์๋๋ค๋ ๋ณด์ฅ์ด ์์ผ๋ฏ๋ก ์ด ์ค๋ณต ์ ๊ฑฐ๋ ๊ทธ ์ดํ๋ก ์ ํ๋ ๋ฟ์ ๋๋ค. ๋ฐ๋ผ์ pandas๋ ๊ฐ ๊ฐ์ ๋ณ๋์ ๊ฐ์ผ๋ก ์ทจ๊ธํ๊ณ ํด์ ๊ฐ๋ฅํ ํ ์ฒ๋ฆฌํฉ๋๋ค. ์ธ ๊ฐ์ ํํ์ด ์๋ ์ด์ ์๋ํ๋ฉด ์๋ํ๊ณ ๋ง์ง๋ง ํ๋๋ฅผ ์งํฉ์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋ฐ๋ก ๊ทธ ๊ฐ์์ ์คํจํฉ๋๋ค.
๋ฐ๋ผ์ ๋ชฉ๋ก์ ํด์ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ฌ๊ธฐ์์ ์๋ํ๋ ๊ฒฌ๊ณ ํ ๊ตฌํ์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ํด์ ๋งต ์ฝ์ ์ frozenset์ผ๋ก ๋ณํ๋๋ ์ธํธ์ ๋ํ ์์ ์ด ์ ์ฌ์ ์ผ๋ก ์์ ์ ์์ง๋ง ์ด๋ ํดํน๋๊ณ ์์์ ์ผ๋ก ๋ณด์ ๋๋ค. .
์ค๋ณต ํญ๋ชฉ์ ์ญ์ ํ ๋ชฉ์ ์ผ๋ก ํด์ํ ์ ์๋ ์ด์ ๋ฌด์ํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
๊ธฐ๋ณธ๊ฐ์ด 'raise'(ํ์ฌ๋ก ์๋ํจ)์ด์ง๋ง '๋ฌด์'๋ก ์ค์ ํ ์ ์๋ kwarg 'unhashable_type'์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค(์์ ํ ์ค๋ณต๋์ง ์์ ํ์ ์ญ์ ํ ์ํ์ด ์์).
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ค๋ณต ํญ๋ชฉ์ ์ญ์ ํ ๋ชฉ์ ์ผ๋ก ํด์ํ ์ ์๋ ์ด์ ๋ฌด์ํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
๊ธฐ๋ณธ๊ฐ์ด 'raise'(ํ์ฌ๋ก ์๋ํจ)์ด์ง๋ง '๋ฌด์'๋ก ์ค์ ํ ์ ์๋ kwarg 'unhashable_type'์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค(์์ ํ ์ค๋ณต๋์ง ์์ ํ์ ์ญ์ ํ ์ํ์ด ์์).