AttributeError: 'DataFrame' 对象没有属性 'ix'。

116

当我尝试使用pandas数据框的.ix属性来提取列时,例如df.ix [:,'col_header'],我遇到了这个错误。

AttributeError: 'DataFrame' object has no attribute 'ix'

脚本在今天上午运行正常,但在一个新的 Linux 环境中,我安装了最新版本的 Pandas 后,今天下午它就报错了。有其他人遇到过这个错误吗?我在这里和其他地方都搜索了一下,但找不到解决方法。


6
你使用的是较旧版本的pandas。看到这个了吗?https://dev59.com/MVcP5IYBdhLWcg3wyc7W - StupidWolf
16个回答

110

尝试使用 df.iloc[:, integer]

.ix 已被弃用

另外,df.loc[:,'col_header'] 用于字符串或布尔索引


我收到了这样的消息:"基于位置的索引只能具有[整数、整数切片(起始点包括,结束点不包括)、整数列表或布尔数组]类型"。 - Ben
顺便提一下,df.loc [:,'col_header'] 用于字符串索引,并且如果索引器是布尔掩码,则需要使用它。 - mins
3
.ix已被弃用” - .ix已被移除,而非被弃用(这意味着不建议使用,但仍然可用)。 - wisbucky

52

将 .ix 改为 .loc,它应该可以正常工作。


27
今天(2020年1月30日)进行的新安装将安装pd.__version__ == '1.0.0'。随之而来的是许多废弃功能的删除

已删除Series.ix和DataFrame.ix(GH26438)


4
尝试以下步骤: 1)安装新版本的Pandas 2)使用.loc而不是.ix

3

我曾经遇到了和pandas 1.0.0相同的问题,这是解决方法:

以管理员身份打开Anaconda Prompt (cmd) ,然后输入以下命令:

conda install pandas==0.25.1

这样新版本的pandas将会被旧版本覆盖!


3

对我有用

使用 df.loc[] 而不是 ix[]


2

ix已被移除

使用iloc或loc代替ix。

如果您具有字符串或用户定义的索引,请使用.loc。


1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community
“as ix is removed” 这句话的确切含义是什么? - ryanwebjackson
现在在pandas中无法使用Ix,您必须使用.iloc或.loc,它们将给您相同的结果。 - Luicfer Ai

1
我使用了 .loc() 而不是 .ix(),它起作用了。

1

在替换之后,将 .ix 替换为 .iloc 对我很有效。

predictions_ARIMA_log = pd.Series(ts_log.iloc[0], index=ts_log.index)


1
如果您需要使用.ix[],则必须将pandas版本降级至0.20.0。在更新的版本中,您可以使用.loc[].iloc[]代替。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接