KeyError: "None of [['', '']] are in the [columns]" pandas python

84,128

Solution 1

By the print you posted, it seems like you have whitespaces as delimiters. pd.read_csv will read using , as default separator, so you have to explicitly state it:

pd.read_csv('source.txt',header=0, delim_whitespace=True)

Solution 2

Maybe you have white spaces around your column names, double check your csv file

Solution 3

simply write code to create a new CSV file and use a new file

 import numpy as np
 import pandas as pd
 import matplotlib.pyplot as plt
 pd.read_csv('source.txt',header=0, delim_whitespace=True)
 headers = ['ID','vocab','sumCI','sumnextCI','new_diff']
 df.columns = headers 
 df.to_csv('newsource.txt')

Solution 4

You can try doing this:

pd.read_csv('source.txt',header=0, delim_whitespace=True)

If you have any white spaces in the data you're will get an error, so delim_whitespace is included to remove those in case they're in the data.

Share:
84,128
sariii
Author by

sariii

Machine learning enthusiast :)

Updated on July 13, 2022

Comments

  • sariii
    sariii almost 2 years

    I would like to slice two columns in my data frame.

    This is my code for doing this:

    import pandas as pd
    df = pd.read_csv('source.txt',header=0)
    cidf=df.loc[:,['vocab','sumCI']]
    print(cidf)
    

    This is a sample of data:

    ID  vocab   sumCI   sumnextCI   new_diff
    450      statu    3.0        0.0       3.0
    391     provid    4.0        1.0       3.0
    382  prescript    3.0        0.0       3.0
    300   lymphoma    2.0        0.0       2.0
    405      renew    2.0        0.0       2.0
    

    **Firstly I got this error: **

    KeyError: “None of [['', '']] are in the [columns]”'
    

    What I have tried:

    • I tried putting a header with index 0 while reading the file,
    • I tried to rename columns with this code:

      df.rename(columns=df.iloc[0],inplace=True)
      
    • I also tried this:

      df.columns = df.iloc[1]
      df=df.reindex(df.index.drop(0))
      
    • Also tried comments in this link

    None of the above resolved the issue.

  • nicomp
    nicomp over 2 years
    This is also something to be aware of when using read_sql_query() : a column name in a table could have leading or trailing spaces. Ugh.