密钥错误:"None of [[, ]] are in the [columns]"熊猫蟒蛇



我想在我的数据框中切两列。

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

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

这是一个数据示例:

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]”'

我尝试过的:

  • 我尝试在读取文件时放一个带有index 0header
  • 我尝试使用以下代码重命名列:
    df.rename(columns=df.iloc[0], inplace=True)
    
  • 我也试过这个:
    df.columns = df.iloc[1]
    df = df.reindex(df.index.drop(0))
    
  • 还尝试在此链接中发表评论

以上方法均未解决问题。

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

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

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

如果收到此(或类似(错误,请检查数据帧是否包含这些列。以下内容应返回True以便索引工作。

cols = ['vocab', 'sumCI']
set(df.columns).issuperset(cols)

如果上述返回False,则需要处理列。

一个常见的罪魁祸首是前导/尾随空格,所以请尝试

df.columns = df.columns.str.strip()

其他常见问题可能是合法列名中的单词之间的双下划线、双空格或全角破折号 ((。然后,您可以尝试正则表达式删除多余的空格和下划线,并在列名等中用破折号替换em破折号。

df.columns = df.columns.to_series().replace({r's+': ' ', r'_+': '_', r'—': '-'}, regex=True)

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

您可以尝试这样做:

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

如果数据中有任何空格,则会收到错误,因此包含delim_whitespace以删除它们,以防它们在数据中。

相关内容

最新更新