栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

报错与解决 | AttributeError: ‘Series‘ object has no attribute ‘set

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

报错与解决 | AttributeError: ‘Series‘ object has no attribute ‘set

文章目录
  • 代码简要介绍
  • 报错
  • 修改方法

太不容易了!不断debug,终于调通了!分享一下解决这个问题的办法。

代码简要介绍
# 创建Series()
songname_vector = pd.Series()
# 新增数据
songname_vector.set_value(id, line)

解释一下代码的意思:
pandas有两种数据结构:Series和Dataframe。
①Series表示一维数组

  • pd.Series()表示创建一个一维数组。
  • 新增一行数据:
    方法1:append():只接受 Series/DataFrame 形式参数,是通过新建了一个 Series 完成了修改,必须接受它的返回值。
    方法2:set_value():类似于Python 内置的字典新增 item 的方式,是原地修改。

②Dataframe表示二维数组。

报错
AttributeError: 'Series' object has no attribute 'set_value'

原因:pandas中没有set_value这个方法了。

修改方法

先说一下正确的解决办法,很简单,一句话的事:
把set_value()改为_set_value(),加个下划线就好啦!


如此简单的错误,愣是让我查了好些资料,走了好些弯路。这里先说一个解决包不存在这类问题的通用解决小妙招,以set_value()方法为例。我们可以删除写好的set_value,重新输入set,在输入的时候,就会自动出来相匹配的包,我们可以看到,欸,_set_value和我们现在用的方法名字好像啊!这时候不妨试一试这个包,说不定就对了呢!


说一下笔者为了解决这个问题所走的弯路,大家避一避。【just look! 不要效仿哦】

弯路step1:set_value改为at
很多资料说,pandas把.set_value()方法改成了.at[]或.iat[],需要进行相应的修改:

注:pycharm批量修改方法:CTRL + R

弯路step2:将()改为[]
改为at后,运行发现报错:‘_AtIndexer’ object is not callable
因此,要把把at后的()改为[]即可

好家伙,看见黄黄的这一片了嘛,这是pycharm报的警告,打开警告可以看到,警告内容是Statement seems to have no effect,意思是这句话可能不起作用,也就是说,你可能写了一堆废话哦!岂有此理?怎么能是废话呀,这逻辑上挺通的呀。所以:只有一个解释:你用错了方法。也就是说,这个报错不能这样改。

(绕到前面用_get_value()方法把)


(全文完)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/965903.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号