Pandas - KeyError: columns not in index

28,436

You need spaces in columns names - after . add one space:

print (df.columns.tolist())
['Open', 'High', 'Low', 'Close', 'Volume', 'Ex-Dividend', 'Split Ratio',
 'Adj. Open', 'Adj. High', 'Adj. Low', 'Adj. Close', 'Adj. Volume']

import pandas as pd
import quandl

df=quandl.get('WIKI/GOOGL')

#print(df.head())
#print (df.columns.tolist())

df=df[['Adj. Open','Adj. High','Adj. Low','Adj. Close','Adj. Volume']]

df['HL_PCT'] =(df['Adj. High']-df['Adj. Close'])/df['Adj. Close'] * 100

df['PCT_change'] =(df['Adj. Close']-df['Adj. Open'])/df['Adj. Open'] * 100

df=df[['Adj. Close','HL_PCT','PCT_change','Adj. Volume']]
print (df.head())
            Adj. Close    HL_PCT  PCT_change  Adj. Volume
Date                                                     
2004-08-19   50.322842  3.712563    0.324968   44659000.0
2004-08-20   54.322689  0.710922    7.227007   22834300.0
2004-08-23   54.869377  3.729433   -1.227880   18256100.0
2004-08-24   52.597363  6.417469   -5.726357   15247300.0
2004-08-25   53.164113  1.886792    1.183658    9188600.0

If solution above not working, you can try:

#pandas below 0.24+
print (df.columns.values.tolist())
#pandas above 0.24+
print (df.columns.to_numpy().tolist())
Share:
28,436
Suraj Kumar Singh
Author by

Suraj Kumar Singh

Updated on November 21, 2020

Comments

  • Suraj Kumar Singh
    Suraj Kumar Singh over 3 years
    import pandas as pd
    import quandl
    
    df=quandl.get('WIKI/GOOGL')
    
    #print(df.head())
    
    df=df[['Adj.Open','Adj.High','Adj.Low','Adj.Close','Adj.Volume']]
    
    df['HL_PCT'] =(df['Adj.High']-df['Adj.Close'])/df['Adj.Close'] * 100
    
    df['PCT_change'] =(df['Adj.Close']-df['Adj.Open'])/df['Adj.Open'] * 100
    
    df=df[['Adj.Close','HT_PCT','PCT_change','Adj.Volume']]
    

    KeyError: "['Adj.Open' 'Adj.High' 'Adj.Low' 'Adj.Close' 'Adj.Volume'] not in index"

  • boardtc
    boardtc over 4 years
    gives error AttributeError: 'Index' object has no attribute 'to_list'
  • jezrael
    jezrael over 4 years
    @boardtc - it is tolist() not to_list
  • boardtc
    boardtc over 4 years
    My bad, I meant to edit that comment, thanks. btw, Above will not work and should be df.columns.values.tolist()
  • jezrael
    jezrael over 4 years
    @boardtc - Added to answer.