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

PythonPandasDataframe

Python Problem Overview


I am getting this error when I try to use the .ix attribute of a pandas data frame to pull out a column, e.g. df.ix[:, 'col_header'].

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

The script worked this morning, but this afternoon I ran it in a new Linux environment with a fresh install of Pandas. Has anybody else seen this error before? I've searched here and elsewhere but can't find it.

Python Solutions


Solution 1 - Python

try df.iloc[:, integer]

.ix is deprecated

By the way, df.loc[:,'col_header'] is for str or Boolean indexing

Solution 2 - Python

Change .ix to .loc and it should work correctly.

Solution 3 - Python

A fresh install today (Jan 30, 2020) would install pd.__version__ == '1.0.0'. With that comes a removal of many deprecated features.

> Removed Series.ix and DataFrame.ix (GH26438)

Solution 4 - Python

Try following steps:

  1. installing new version of Pandas
  2. use .loc instead of .ix

Solution 5 - Python

had same issue with pandas 1.0.0, this worked for me

Open Anaconda Prompt (cmd) as Administrator, then

conda install pandas==0.25.1

Your newer pandas version will be overwritten by older one!

Solution 6 - Python

it works for me

Use df.loc[] instade of ix[]

Solution 7 - Python

I used .loc() instead of .ix() and it worked.

Solution 8 - Python

replace .ix with .iloc after replacing its works well for me also

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

Solution 9 - Python

as ix is removed

use iloc or loc inplace of ix.

use .loc if you have string or userdefined indexing.

Solution 10 - Python

one column:

df[['sepal width']]

two columns:

df[['sepal width','petal width']]

special columns(select column include 'length'):

df[[c for c in df.columns if 'length' in c]]

Solution 11 - Python

I am reading the book 'Python for data analysis' by Wes McKinney and I met the same problem of Dataframe.ix[] while retrieving the rows with index. I replace ix by iloc and it works perfectly.

Solution 12 - Python

I'm using .ix as I have mixed indexing, labels and integers. .loc() does not solve the issue as well as .iloc; both are ending in errors. I was intentionally using .ix because it was the fast lane when the index is a mix of integers and labels.

As example a df like:

enter image description here

My way out is to back-up columns and index, replace with integers, use .iat and then restore the df as it was at the beginning. I have something like:

# 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

Bye, Fabio.

Solution 13 - Python

I had to do this:

returns.ix['2015-01-01':'2015-12-31'].std()

After much ado I made it happen using this:

returns.xs(key='2015',axis=0).std()

I believe at least for this case we can use cross section and filter using 2015 as key.

Solution 14 - Python

Yes, that's right. Replace df.ix[] with df.iloc[] or df.loc[]

Solution 15 - Python

  1. Guys try to update current pandas
  2. replace .ix with .iloc after replacing its works well for me For details refers documentations

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDiarmid RobertsView Question on Stackoverflow
Solution 1 - PythonCode42View Answer on Stackoverflow
Solution 2 - PythonAbidi MohamedView Answer on Stackoverflow
Solution 3 - PythonALollzView Answer on Stackoverflow
Solution 4 - PythonSauView Answer on Stackoverflow
Solution 5 - PythonEric StralsundView Answer on Stackoverflow
Solution 6 - PythonDhiren BirenView Answer on Stackoverflow
Solution 7 - Pythonuser3752821View Answer on Stackoverflow
Solution 8 - PythonEkramy YounanView Answer on Stackoverflow
Solution 9 - PythonDevView Answer on Stackoverflow
Solution 10 - PythonHelloNewWorldView Answer on Stackoverflow
Solution 11 - PythonAviciiView Answer on Stackoverflow
Solution 12 - PythonFabio PomiView Answer on Stackoverflow
Solution 13 - Pythonuser13989469View Answer on Stackoverflow
Solution 14 - PythonPravu ChaudharyView Answer on Stackoverflow
Solution 15 - PythonSIVA001View Answer on Stackoverflow