成功解决:AttributeError: ‘DataFrame‘ object has no attribute ‘ix‘
报错信息
粉丝群里面的一个小伙伴想用pandas的ix方法,但是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错代码如下::
# 混合索引 ix
# Series
print(ser_obj.ix[1:3])
print(ser_obj.ix['b':'c'])
# DataFrame
print(df_obj.loc[0:2, 'a'])
print(df_obj.ix[0:2, 0])
报错信息如下所示:
AttributeError: 'DataFrame' object has no attribute 'ix'
报错翻译
报错翻译如下所示:
属性错误:“DataFrame”对象没有属性“ix”
报错原因
报错原因:
在pandas版本0.20.0及其以后版本中,ix已经不被推荐使用,。这是为什么呢?这是由于ix的复杂特点可能使ix使用起来有些棘手:
如果索引是整数类型,则ix将仅使用基于标签的索引,而不会回退到基于位置的索引。如果标签不在索引中,则会引发错误。
如果索引不仅包含整数,则给定一个整数,ix将立即使用基于位置的索引而不是基于标签的索引。但是,如果ix被赋予另一种类型(例如字符串),则它可以使用基于标签的索引。
解决方法
pandas的1.0.0版本后,已经对该函数进行了升级和重构。
只需要将
print(df_obj.ix[0:2, 0])
改成:
print(df_obj.loc[0:2, '列名'])
以上是此问题报错原因的解决方法,欢迎评论区留言讨论是否能解决,如果有用欢迎点赞收藏文章谢谢支持,博主才有动力持续记录遇到的问题!!!