AttributeError:“DataFrame”对象没有属性“ix”
Posted
技术标签:
【中文标题】AttributeError:“DataFrame”对象没有属性“ix”【英文标题】:AttributeError: 'DataFrame' object has no attribute 'ix' 【发布时间】:2020-05-16 09:15:33 【问题描述】:当我尝试使用 pandas 数据框的 .ix 属性拉出一列时出现此错误,例如df.ix[:, 'col_header']
.
AttributeError: 'DataFrame' object has no attribute 'ix'
该脚本今天早上可以运行,但今天下午我在全新安装了 Pandas 的新 Linux 环境中运行它。有没有其他人见过这个错误?我已经在这里和其他地方搜索过,但找不到。
【问题讨论】:
您运行的是旧版本的 pandas。看到这个了吗? ***.com/questions/43838999/pandas-replacement-for-ix 【参考方案1】:试试df.iloc[:, integer]
.ix
已弃用
顺便说一句,df.loc[:,'col_header']
用于 str 或布尔索引
【讨论】:
我收到“基于位置的索引只能有 [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] 类型”。 "顺便说一句,df.loc[:,'col_header'] 用于 str 索引",如果索引器是布尔掩码,则需要。 ".ix
is deprecated" - .ix
已被删除,而不是被弃用(这意味着不鼓励但仍然可用)。【参考方案2】:
将 .ix 更改为 .loc,它应该可以正常工作。
【讨论】:
【参考方案3】:今天(2020 年 1 月 30 日)全新安装将安装 pd.__version__ == '1.0.0'
。随之而来的是removal of many deprecated features。
删除 Series.ix 和 DataFrame.ix (GH26438)
【讨论】:
【参考方案4】:尝试以下步骤: 1)安装新版本的熊猫 2) 使用 .loc 代替 .ix
【讨论】:
【参考方案5】:pandas 1.0.0 也有同样的问题,这对我有用
以管理员身份打开 Anaconda Prompt (cmd),然后
conda install pandas==0.25.1
您的新熊猫版本将被旧版本覆盖!
【讨论】:
【参考方案6】:对我有用
使用 df.loc[] 代替 ix[]
【讨论】:
【参考方案7】:我使用 .loc() 而不是 .ix() 并且它有效。
【讨论】:
【参考方案8】:用 .iloc 替换 .ix 后替换它对我也很有效
predictions_ARIMA_log = pd.Series(ts_log.iloc[0], index=ts_log.index)
【讨论】:
【参考方案9】:一栏:
df[['sepal width']]
两列:
df[['sepal width','petal width']]
特殊列(选择列包括“长度”):
df[[c for c in df.columns if 'length' in c]]
【讨论】:
【参考方案10】:我正在阅读 Wes McKinney 的'Python for data analysis'一书,在检索具有索引的行时遇到了 Dataframe.ix[] 的相同问题。 我用 iloc 替换了 ix,它工作得很好。
【讨论】:
【参考方案11】:我使用的是 .ix,因为我混合了索引、标签和整数。 .loc() 不能像 .iloc 那样解决问题;两者都以错误结尾。我故意使用 .ix,因为当索引是整数和标签的混合时,它是快车道。
例如一个像这样的df:
我的出路是备份列和索引,用整数替换,使用 .iat 然后将 df 恢复为开始时的样子。我有类似的东西:
# Save the df and replace indec and columns with integers
lista_colonne = list(df.columns)
df.columns = range(0,len(lista_colonne))
nome_indice = df.index.name
lista_indice = list(df.index)
df['Indice'] = range(0,len(lista_indice))
df.index = df['Indice']
del df['Indice']
... indexing here with .iat in place of .ix
# Now back as it was
df.columns = lista_colonne
df['Indice'] = lista_indice
df.index = df['Indice']
del df['Indice']
df.index.name = nome_indice
再见,法比奥。
【讨论】:
【参考方案12】:我必须这样做:
returns.ix['2015-01-01':'2015-12-31'].std()
经过一番折腾,我用这个实现了它:
returns.xs(key='2015',axis=0).std()
我相信至少在这种情况下,我们可以使用横截面和过滤器,使用 2015 作为键。
【讨论】:
【参考方案13】:是的,没错。将df.ix[]
替换为df.iloc[]
或df.loc[]
【讨论】:
【参考方案14】:-
大家尝试更新当前的熊猫
将 .ix 替换为 .iloc
在更换它对我来说很好之后
有关详细信息,请参阅文档
【讨论】:
以上是关于AttributeError:“DataFrame”对象没有属性“ix”的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:“DataFrame”对象没有属性“map”
AttributeError:“DataFrame”对象没有属性“label”
AttributeError:模块“networkx”没有属性“from_pandas_dataframe”
Pandas 分析错误 AttributeError:“DataFrame”对象没有属性“profile_report”
Pandas 中的 Concat 2 列 - AttributeError:“DataFrame”对象没有属性“concat”
Unpickling 包含 pandas 数据框的字典会引发 AttributeError:“Dataframe”对象没有属性“_data”