我对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:“ ['Parameter 7','Parameter 8','Parameter 2','Parameter 3','Parameter 4','Parameter 5','Parameter 6']不在索引中”在preprocess_features(zerlite_13X_error)
有两种最直观的解决方法:
使用任何文本编辑器打开源文件,然后查看第一行。它应包含以空格分隔的列名称。您的情况应该是这样的:
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规则,避免传递带有默认值的任何参数。