KeyError: [......] отсутствует в индексе - PullRequest
0 голосов
/ 05 октября 2019

Я относительно новичок в Python, и когда я делаю домашнюю работу, я столкнулся со следующими проблемами.

Это для нового стартера для tenorflow и 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'] not in index" в preprocess_features (zerlite_13X_error)

1 Ответ

0 голосов
/ 05 октября 2019

Существует 2 наиболее интуитивных подхода к вашей проблеме:

Подход 1

Откройте исходный файл в любом текстовом редакторе и посмотрите на первую строку. Он должен содержать имена столбцов, разделенные пробелами. В вашем случае это должно быть что-то вроде:

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

(и, возможно, некоторых других столбцов).

Подход 2

Сразу после read_csv add:

print(zerlite_13X_error.columns)

В этой распечатке будут отображаться имена столбцов только что прочитанного информационного кадра.

В любом случае

Просмотрите список имен столбцов. Он должен содержать каждый столбец из «вашего» списка.

Если некоторые столбцы отсутствуют, исправьте строку заголовка соответствующим образом и снова запустите программу.

Другим возможным источником ошибки может быть дополнительные пробелы после запятых (или в начале этого ряда). К сожалению, read_csv недостаточно умен, чтобы отфильтровать такие пробелы. Эта функция просто разделяет строку заголовка на символ разделителя (в данном случае запятую), и каждый результирующий «сегмент» становится именем соответствующего столбца.

В приведенном выше случае эти дополнительные пробелы становятся начальными символами в столбцеnames.

Еще один возможный источник ошибки - исходный файл не содержит ни одной строки заголовка. В этом случае вы должны передать read_csv свой собственный список имен столбцов ( names параметр) в порядке, соответствующем фактическому содержимому входного файла.

Обратите внимание такжечто sep = ',' не требуется, поскольку ',' является просто значением по умолчанию для этого параметра. Поэтому, согласно правилу Keep It Simple , избегайте передачи параметров со значениями по умолчанию.

...