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

人盡茶涼 提交于 2020-01-20 04:06:02

问题


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.


回答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)



回答2:


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')



回答3:


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.



来源:https://stackoverflow.com/questions/51976930/keyerror-none-of-are-in-the-columns-pandas-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!