に:
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-requestsは、いずれにしても修正を受け入れます。
現在のパンダはわずかに異なるTypeError( TypeError: unhashable type: 'set'
)を提供しますが、これは要点に達します-セットまたはリストをどのように重複排除しますか? タプルやプリミティブ型とは異なり、これらはハッシュ可能ではないため(セットは、ハッシュ可能なフリーズセットに変換できます)、重複排除戦略を考え出す必要があります。
いずれにせよ、オブジェクトdtypeを扱っているので、次の行にセットまたはリストが含まれないという保証はありません。したがって、この重複排除はそれ以降悪化するだけです。 したがって、パンダは各値を個別の値として扱い、ハッシュ可能である限りそれらを処理します。 3つのタプルを持つ列を試してみてください。それは機能し、最後のタプルをセットに変更すると、その値で失敗します。
したがって、リストにハッシュ機能がないことを考えると、ここで機能する確実な実装があるかどうかはわかりません。ハッシュマップの挿入時にフリーズセットに変換されるセットの修正がある可能性がありますが、それはハッキーで恣意的です。
重複を削除する目的でハッシュできない列を無視するのはどうですか?
デフォルトが「raise」(現在のように機能する)であるkwarg「unhashable_type」を追加するのと同様ですが、「ignore」に設定できます(完全に複製されていない行を削除するリスクがあります)。
最も参考になるコメント
重複を削除する目的でハッシュできない列を無視するのはどうですか?
デフォルトが「raise」(現在のように機能する)であるkwarg「unhashable_type」を追加するのと同様ですが、「ignore」に設定できます(完全に複製されていない行を削除するリスクがあります)。