为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕勒3428872 2022-06-14 16:11:14
我对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_featurespreprocess_features(zerlite_13X_error)KeyError:“['Parameter 7', 'Parameter 8', 'Parameter 2', 'Parameter 3', 'Parameter 4', 'Parameter 5', 'Parameter 6'] not in index” in preprocess_features(zerlite_13X_error)
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

有两种最直观的方法可以解决您的问题:

方法一

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

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

(也许还有其他一些专栏)。

方法二

就在read_csv添加:

print(zerlite_13X_error.columns)

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

在任一情况下

查看列名列表。它应该包含“你的”列表中的每一列。

如果缺少某些列,请相应地更正标题行并再次运行您的程序。

另一个可能的错误来源可能是逗号后(或此行开头)的额外空格。不幸的是,read_csv不够聪明,无法过滤掉这些空格。此函数仅在分隔符 char 上拆分标题行(在本例中为逗号),并且每个生成的“段”成为相应列的名称。

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

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

另请注意,不需要sep=',' ,因为','只是此参数的默认值。因此,根据Keep It Simple规则,避免使用默认值传递任何参数。


查看完整回答
反对 回复 2022-06-14
?
慕容708150

TA贡献1831条经验 获得超4个赞

所有的 Columns 都有一个空格"Parameter 1",我们在"Parameter 1". 我们需要摆脱它:


df = pd.read_csv(fileName)

df = df.rename({"Parameter 1": "Parameter_1"}, axis=1)


查看完整回答
反对 回复 2022-06-14
  • 2 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信