无法散列的类型:“列表”错误

罗汉·拉吉(Rohan Raj)

我在以下代码中遇到此错误

def cleaning(CURRENT,STRING,NEXT):
    data.ix[data[NEXT].str.contains(STRING,na=False),CURRENT] =...
    data[NEXT][data[NEXT].str.contains(STRING,na=False)]
d = ['lower','Less']
c = a[5:]
for x,y in zip(range(len(c)),d):
    cleaning(c[x],d,c[x+1])
    cleaning(c[x],d,c[x+2])

在这里,数据是一个熊猫DataFrame。但是对于相同的功能,我在以下代码中没有错误

a = ['UBC','LBC', 'HC', 'FC', 'P:C/F','P', 'A', 'Sex']
b = ['upper','lower','hair','footwear']
for x,y in zip(range(len(a)),b):
    cleaning(a[x],y,a[x+1])
    cleaning(a[x],y,a[x+2])

我知道这是因为我们不能将列表用作字典中的键,但是我不确定这里是如何发生的,以及为什么它在一个循环而不是另一个循环中起作用。

马丁·彼得斯(Martijn Pieters)

您传入d一个列表作为STRING参数:

d = ['lower','Less']
# ...
    cleaning(c[x],d,c[x+1])
    #             ^

您的第二个示例有效,您传入了y,它是b列表中的单个元素

b = ['upper','lower','hair','footwear']
for x,y in zip(range(len(a)),b):
    # ^ one element from b   ^
    cleaning(a[x],y,a[x+1])
    #             ^

pandas.Series.str.contains方法默认情况下接受正则表达式,并re.compile使用字典作为缓存来保存编译后的模式。因为您传递了一个列表,所以会出现错误:

>>> pandas.Series(['aa', 'bb', 'cc']).str.contains(['a'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/pandas/core/strings.py", line 1458, in contains
    regex=regex)
  File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/pandas/core/strings.py", line 222, in str_contains
    regex = re.compile(pat, flags=flags)
  File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/re.py", line 194, in compile
    return _compile(pattern, flags)
  File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/re.py", line 237, in _compile
    p, loc = _cache[cachekey]
TypeError: unhashable type: 'list'

解决方法是传递y而不是d

for x, y in zip(range(len(c)) ,d):
    cleaning(c[x], y, c[x + 1])
    cleaning(c[x], y, c[x + 2])

您可能想提出更好的变量名。一个字母的名称很难区分,并且容易导致此类错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django:无法散列的类型:“列表”错误

类型错误:无法散列的类型:'列表'(使用集合)

类型错误:无法散列的类型:'列表'(使用字典)

Python列表操作错误:无法散列的类型“列表”

get_dumies的无法散列的类型“列表”错误

如何修复TypeError:无法散列的类型:“列表”错误

如何解决无法散列的类型:“列表”错误

无法散列的类型:停用词的“列表”错误

无法散列的类型错误

无法散列的类型:“ dict”类型错误

Python:TypeError:无法散列的类型:“列表”

Django:无法散列的类型:“列表”

熊猫:TypeError:无法散列的类型:“列表”

无法散列的类型列表python

错误:无法散列的类型:“列表”。在使用df.groupby.apply时

django rest 框架:类型错误:不可散列类型:“列表”

熊猫列的列表理解结果:无法散列的类型:“ dict”

列表继承方法的不可散列类型错误

如何克服TypeError:无法散列的类型:“列表”

TypeError:无法散列的类型:调用.iloc()时的“列表”

sess.run中的Tensorflow无法散列的类型'列表'

Scrapy(python)TypeError:无法散列的类型:“列表”

无法散列的类型:在csv文件中工作时的“列表”

TypeError:无法散列的类型:python中的“列表”

如何修复'TypeError:无法散列的类型:'list'错误?

查找模式时无法散列的类型错误

不可散列的类型:“列表”

TypeError:无法散列的类型

TypeError:无法散列的“列表”