小白求助:python报错怎么解决 ?

python 报错:AttributeError: ("'list' object has no attribute 'map'", 'occurred at index 0')

def function(x, y, z):
    if x <= 100 and y == 'AB':
        return (list(z).map(concept_hierarchy(0))) * disc
    elif x <= 200 and y == 'AC':
        return (list(z).map(concept_hierarchy(1))) * disc
    else:
        return None
data['abc'] = data.apply(lambda x: function(x['a'], x['b'], x['c']), axis=1)

代码主要是对数据表里面,C列的值(特征较多,字符型)进行关系映射(转为数值)。

4个回答

(list(z).map(concept_hierarchy(0))) * disc 这种写法,就是说在调用list的map成员函数,但list是python的内置类型,它没有map成员函数。
你本来的意思是想用map高阶函数,用法其实很简单,给你推荐一个链接,一下你就明白了。
https://www.liaoxuefeng.com/wiki/1016959663602400/1017329367486080

weixin_44562468
草地打滾的熊 你好,问题已解决,这边应该是使用字典来封装取数就没问题了。
大约一年之前 回复
weixin_44562468
草地打滾的熊 你好,使用你推荐的方法后,在用apply调取数据表特征列的元素时,因为该处data['abc'] = data.apply(lambda x: function(x['a'], x['b'], x['c']), axis=1)调取C列元素时,报错;我想是使用apply获取数据表元素的方式不对。
大约一年之前 回复

不知道你的

concept_hierarchy(0)

是不是一个函数,并且也没看出在哪里调用了z,如果是的话,你应该把它改成

list(map(lambda zi:concept_hierarchy(zi)*disc,z))

按照我的理解写的,可能和你想表达的意思不一致,你参考一下map的用法,python3返回迭代器,所以又套了一层list在外面。

weixin_44562468
草地打滾的熊 你好,concept_hieraarche(0)这里是已经定义了一个映射,主要是想根据C列的字符名称,按照映射表取到相应的数值。
大约一年之前 回复

A. map()是python内置的高阶函数,对于pyhon3,返回的是迭代对象,对于python2 ,返回的是列表

B. 其参数为 map(function,list) ,function为可接收参数的函数名,list为待处理的列表对象,所以 你这里 list(z).map(concept_hierarchy(0))的调用方式是错误的,正确的调用方式应该是map(concept_hierarchy,list(z))

C. 你的调用方式,可以理解为list.map(function),这种调用方式是错误的,且list对象,无map属性或方法,所以提示的报错是,'list' object has no attribute 'map'",另外 concept_hierarchy(0),我理解的是 concept_hierarchy是个你自定义的函数,但是这里不应该写入参数,map函数会自动迭代list参数(z?)的每个元素作为函数(concept_hierarchy)的参数,如果concept_hierarchy(0) 返回的是个固定值,则concept_hierarchy(0) 是不能作为map的function 参数的,因为function要求一定是个可接受参数的函数

weixin_44562468
草地打滾的熊 回复积跬步以致千里。: 你好,问题已解决,感谢你的热心回答。
大约一年之前 回复
SpiritedAway1106
积跬步以至千里。 回复草地打滾的熊: 不管怎么样,你的map调用应当遵循map的使用规则,方便的话,可以给个C列的样例数据,以及concept_hierarchy的实现,可以更好的一起调试
大约一年之前 回复
weixin_44562468
草地打滾的熊 你好,现在想解决的问题,是想根据C列的字段不同名称,按照映射表函数concept_hierarchy取到对应的值。
大约一年之前 回复

map函数用的不对,应该是map(function,iterables)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问