Pandas: df. المكررة و drop_duplicates ترفع TypeError مع قيم المجموعة والقائمة.

تم إنشاؤها على ٢٢ مارس ٢٠١٦  ·  3تعليقات  ·  مصدر: pandas-dev/pandas

في:

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
Bug Missing-data

التعليق الأكثر فائدة

ماذا عن تجاهل الأعمدة غير القابلة للفصل لأغراض إسقاط التكرارات؟
مثل إضافة kwarg "unhashable_type" الذي يكون الإعداد الافتراضي هو "lift" (والذي يعمل حاليًا) ، ولكن يمكن ضبطه على "ignore" (مع المخاطرة بإسقاط صفوف غير مكررة بالكامل).

ال 3 كومينتر

أظن. أنت تستخدم قيمة تشبه القائمة داخل خلية من إطار. هذا غير فعال تمامًا وغير مدعوم بشكل عام. تقبل طلبات السحب لإصلاحها في أي حال.

تعطي حيوانات الباندا الحالية خطأ TypeError مختلفًا قليلاً ( TypeError: unhashable type: 'set' ) ، والذي يصل إلى النقطة - كيف يمكنك إلغاء تكرار المجموعات أو القوائم؟ على عكس الأنواع البدائية والبطاقات ، فإن هذه الأنواع غير قابلة للتجزئة (يمكن تحويل المجموعات إلى مجموعات مجمدات قابلة للتجزئة) ، لذلك يتعين عليك وضع استراتيجية لإلغاء البيانات المكررة.

على أي حال ، نظرًا لأنك تتعامل مع نوع كائن ، فليس هناك ما يضمن أن الصف التالي لن يحتوي على مجموعة أو قائمة ، لذا فإن عملية إلغاء البيانات المكررة تزداد سوءًا منذ ذلك الحين. لذا فإن الباندا تتعامل مع كل قيمة كقيمة منفصلة وتعالجها طالما أنها قابلة للتجزئة. فقط جرب عمودًا به ثلاث مجموعات ، سيعمل ، ثم غيّر آخرها ليكون مجموعة وستفشل في هذه القيمة بالذات.

لذلك ، لست متأكدًا من وجود تطبيق قوي سيعمل هنا نظرًا لنقص قابلية التجزئة في القوائم ، فمن المحتمل أن يكون هناك إصلاح للمجموعات ، والتي سيتم تحويلها إلى مجموعات مجردة عند إدراج خريطة التجزئة ، ولكن هذا يبدو اختراقًا وتعسفيًا .

ماذا عن تجاهل الأعمدة غير القابلة للفصل لأغراض إسقاط التكرارات؟
مثل إضافة kwarg "unhashable_type" الذي يكون الإعداد الافتراضي هو "lift" (والذي يعمل حاليًا) ، ولكن يمكن ضبطه على "ignore" (مع المخاطرة بإسقاط صفوف غير مكررة بالكامل).

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات