Есть ошибка pandas или я что-то делаю не так? - PullRequest
0 голосов
/ 21 июня 2020

Это код, который вызывает ошибку keyError

most_valued_category = df.groupby('Category').Value.sum().reset_index()
print(most_valued_category)

Ошибка

KeyError                                  Traceback (most recent call last)
<ipython-input-11-5b310cd40031> in <module>
----> 1 most_valued_category = df.groupby('Category').Value.sum().reset_index()
 2 print(most_valued_category)
 KeyError: "Category"

Когда я просмотрел информацию о dataFrame, посмотрите, что она показывает

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 216930 entries, 0 to 216929
Data columns (total 7 columns):
#   Column       Non-Null Count   Dtype  
---  ------       --------------   ----- 
0   Show Number  216930 non-null  int64 
1    Air Date    216930 non-null  object
2    Round       216930 non-null  object
3    Category    216930 non-null  object
4    Value       216930 non-null  object
5    Question    216930 non-null  object
6    Answer      216928 non-null  object
dtypes: int64(1), object(6)
memory usage: 11.6+ MB

Нет

Ответы [ 3 ]

3 голосов
/ 21 июня 2020

Похоже, что перед столбцом «Категория» есть пробел вместе с некоторыми другими столбцами. Чтобы исправить это, вы можете запустить этот код после создания фрейма данных.

df.colums = [name.strip() for name in df.columns]

Это удалит все начальные и конечные пробелы из всех столбцов.

0 голосов
/ 21 июня 2020

ScootCork только предполагается , что ваш столбец Категория имеет начальное пространство.

Из вашего сообщения я вижу, что проблема более серьезная : все ваши столбцы, кроме первого, делать имеют такое начальное пространство.

Посмотрите на свою распечатку из df.info (), где все имена столбцов имеют выравнивание по левому краю :

0   Show Number  ...
1    Air Date    ...
2    Round       ...
3    Category    ...
4    Value       ...
5    Question    ...
6    Answer      ...

Вы видите, что все имена столбцов, кроме первого, сдвинуты на 1 место вправо? Это означает, что все они имеют только это начальное пространство.

Наиболее вероятная причина в том, что:

  • Вы читаете этот файл, используя, например, read_csv , со столбцом имена в первой строке,
  • Эта первая строка отформатирована примерно как Show Number, Air Date, Round, и т. д.

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

Решение - удалить эти пробелы из вашего CSV-файла .

Другой вариант - добавить параметр skipinitial-space = True к read_csv , но этот параметр относится к всем строкам ввода, а не только строка заголовка.

0 голосов
/ 21 июня 2020

Обычно это означает, что в ключевом имени столбца, который вы вызываете, есть ошибка; в этом случае ключ «Категория», который вы используете.

При просмотре информации фрейма данных по имени и типу столбца, похоже, нет ошибки, если только в имени «Категория» нет начального или конечного пробела "или" Категория ". Другая возможность заключается в том, что вы используете '' вместо "".

Также будьте осторожны, потому что тип столбца «Категория» имеет тип Object, а не число, поэтому он, вероятно, отправит новую ошибку как только вы удалите ошибку "имя / ключ" и попытаетесь суммировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...