【问题标题】:KeyError: "None of [['', '']] are in the [columns]" pandas pythonKeyError:“[['','']] 中没有一个在 [columns] 中”pandas python
【发布时间】:2019-01-29 07:25:51
【问题描述】:

我想在我的数据框中分割两列。

这是我的代码:

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也试过cmets

以上都没有解决问题。

【问题讨论】:

  • 修改前请发print(df.columns)

标签: python pandas dataframe slice


【解决方案1】:

也许您的列名周围有空格,请仔细检查您的 csv 文件

【讨论】:

  • 这也是使用 read_sql_query() 时需要注意的一点:表中的列名可以有前导或尾随空格。呃。
【解决方案2】:

您可以尝试这样做:

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

如果您的数据中有任何空格,您将收到错误消息,因此包含delim_whitespace 以删除这些空格,以防它们在数据中。

【讨论】:

    【解决方案3】:

    只需编写代码即可创建新的 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')
    

    【讨论】:

      【解决方案4】:

      根据您发布的印刷品,您似乎有空格作为分隔符。 pd.read_csv 将使用 , 作为默认分隔符读取,因此您必须明确声明:

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

      【讨论】:

        猜你喜欢
        • 2021-11-19
        • 2017-01-07
        • 2020-05-26
        • 1970-01-01
        • 1970-01-01
        • 2017-03-14
        • 2021-02-09
        • 2021-01-08
        • 1970-01-01
        相关资源
        最近更新 更多