KeyError:“ [[”,“]]]都不在“ [列]”中

时间:2018-08-23 00:46:44

标签: python pandas dataframe slice

我想在数据框中切两列。

这是我执行此操作的代码:

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

这是数据示例:

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

**首先我收到此错误:**

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

我尝试过的事情:

  • 我在读取文件时尝试将headerindex 0放在一起,
  • 我尝试使用以下代码重命名列:

    df.rename(columns=df.iloc[0],inplace=True)
    
  • 我也尝试过:

    df.columns = df.iloc[1]
    df=df.reindex(df.index.drop(0))
    
  • 也在此link

  • 中尝试了注释

以上均未解决问题。

3 个答案:

答案 0 :(得分:3)

通过您发布的打印,看来您有空白作为定界符。 MissingContractAttachments将使用pd.read_csv作为默认分隔符进行读取,因此您必须明确声明它:

,

答案 1 :(得分:1)

只需编写代码即可创建新的CSV文件并使用新文件

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

答案 2 :(得分:0)

您可以尝试这样做:

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

如果数据中有任何空格,则会出现错误,因此包含delim_whitespace可以删除那些在数据中的空格。