【问题标题】:Unhashable list error when finding duplicates in a pandas dataframe在熊猫数据框中查找重复项时出现不可散列列表错误
【发布时间】:2019-08-15 02:41:12
【问题描述】:

您好,这真的让我很困惑,因为我在大型数据框上使用了一个命令:

df.duplicated(subset=None, keep='first)

这看起来与文档所说的相同:

DataFrame.duplicated(subset=None, keep='first')

我只是使用 df,但是,我得到的只是以下回溯:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-53-529f7b7a97fb> in <module>()
----> 1 df.duplicated(subset=None, keep='first')

/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in duplicated(self, subset, keep)
   4383         vals = (col.values for name, col in self.iteritems()
   4384                 if name in subset)
-> 4385         labels, shape = map(list, zip(*map(f, vals)))
   4386 
   4387         ids = get_group_index(labels, shape, sort=False, xnull=False)

/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in f(vals)
   4364         def f(vals):
   4365             labels, shape = algorithms.factorize(
-> 4366                 vals, size_hint=min(len(self), _SIZE_HINT_LIMIT))
   4367             return labels.astype('i8', copy=False), len(shape)
   4368 

/anaconda3/lib/python3.7/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
    176                 else:
    177                     kwargs[new_arg_name] = new_arg_value
--> 178             return func(*args, **kwargs)
    179         return wrapper
    180     return _deprecate_kwarg

/anaconda3/lib/python3.7/site-packages/pandas/core/algorithms.py in factorize(values, sort, order, na_sentinel, size_hint)
    628                                            na_sentinel=na_sentinel,
    629                                            size_hint=size_hint,
--> 630                                            na_value=na_value)
    631 
    632     if sort and len(uniques) > 0:

/anaconda3/lib/python3.7/site-packages/pandas/core/algorithms.py in _factorize_array(values, na_sentinel, size_hint, na_value)
    474     uniques = vec_klass()
    475     labels = table.get_labels(values, uniques, 0, na_sentinel,
--> 476                               na_value=na_value)
    477 
    478     labels = _ensure_platform_int(labels)

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_labels()

TypeError: unhashable type: 'list'

我做错了什么?

【问题讨论】:

标签: python pandas duplicates


【解决方案1】:

据我了解,您的数据框中有列表,而 python 或 Pandas 不能散列列表。如果您曾经尝试将列表用作字典中的键,您可能已经观察到这一点。一个简单的解决方法是将列表转换为可散列的元组。

【讨论】:

  • 啊,数据中不应该有任何列表,它是一个包含 28 个已知列的 2.6Gb csv 文件。我可以找到重复项是我将数据子集到列组中,但这是我要检查我们的插件不是双重报告的整个文件。
  • 你能写一个自定义函数并检查数据框中是否有任何值吗?如果没有,请发布示例数据框和列值
  • 这个数据我很清楚,没有可以是列表的字段,因为它只是我们公司配置的设备的错误数据。但是,我将尝试重新获取数据并检查每一列是否有可能的列表并重试,但是必须删除任何包含列表的行,因为它不能使用任何列表数据,我们的系统只需要字符串。
猜你喜欢
  • 1970-01-01
  • 2018-11-22
  • 2019-05-18
  • 2016-04-27
  • 1970-01-01
  • 2019-03-06
  • 2018-04-08
  • 2016-10-02
  • 2022-09-27
相关资源
最近更新 更多