KeyError:[......]不在索引中

时间:2019-10-05 09:05:11

标签: python pandas keyerror

我对Python比较陌生,当我做作业时,遇到了以下问题。

这是用于tensorflow和panda的新启动器

zerlite_13X_error = pd.read_csv("zerlite_13x_error.csv", sep=",")
def preprocess_features(zerlite_13X_error):
    """Prepares input features from zerlite_13X_error
    Args:
    zerlite_13X_error: A Pandas DataFrame expected to contain data

    Return:
    A DataFrame that contains the features to be used for the model.
including synthetic features
    """
    selected_features = zerlite_13X_error[
        ["Parameter 1",
         "Parameter 2",
         "Parameter 3",
         "Parameter 4",
         "Parameter 5",
         "Parameter 6",
         "Parameter 7",
         "Parameter 8"]]
    processed_features = selected_features.copy()
    print(processed_features.head())
    return processed_features

preprocess_features(zerlite_13X_error)
  

KeyError:“ ['参数7','参数8','参数2','参数3','参数4','参数5','参数6']不在索引中”   在preprocess_features(zerlite_13X_error)

1 个答案:

答案 0 :(得分:0)

有两种最直观的解决方法:

方法1

使用任何文本编辑器打开源文件,然后查看第一行。 它应包含以空格分隔的列名称。 在您的情况下,应该是这样的:

Parameter 1,Parameter 2,Parameter 3,Parameter 4,Parameter 5,Parameter 6,Parameter 7,Parameter 8

(也许还有其他一些列)。

方法2

read_csv 之后添加:

print(zerlite_13X_error.columns)

此打印输出将显示刚刚读取的DataFrame的列名。

无论哪种情况

看看列名列表。它应该包含来自 “您的”列表。

如果缺少某些列,请相应地更正标题行,然后运行 再次编程。

另一个可能的错误来源可能是逗号后的多余空格 (或在此行的开头)。 不幸的是, read_csv 不够聪明,无法过滤出此类空间。 此函数仅在分隔符char上拆分标题行(在这种情况下为逗号) 并且每个产生的“段”将成为相应列的名称。

在上述情况下,这些多余的空格成为列名称中的初始字符。

另一个可能的错误源是源文件不包含 任何标题行。 在这种情况下,您应该将自己的列名列表传递给 read_csv 名称参数),它的顺序与输入文件的实际内容相对应。

还请注意,不需要 sep =',',因为','仅是默认设置 此参数的值。因此,根据保持简单规则, 避免传递带有默认值的任何参数。