Панды: pandas._libs.hashtable.Int64HashTable.get_item

У меня есть следующий код, работающий с фреймом данных df:

  print df
  categories = df['my_classification'].unique()
  for c in categories:
    print c
    win = df[df.result == 'Won'][df['my_classification'] == c]['prob'][0]

    print type(win)
    lost = df[df.result == 'Lost'][df['my_classification'] == c]['prob'][0]
    print type(lost)

Тогда я получил следующий результат:

   result          my_classification      prob
0  Won                   ENTERPRISE      0.657895
1  Won                   COMMERCIAL      0.342105
2  Lost                  ENTERPRISE      0.611842
3  Lost                  COMMERCIAL      0.388158
ENTERPRISE
<type 'numpy.float64'>

И ошибки:

There was a problem running this cell
KeyError 0 
KeyErrorTraceback (most recent call last)
<ipython-input-4-38a901f9868a> in <module>()
     38 
     39     print type(win)
---> 40     lost = df[df.result == 'Lost'][df['my_classification'] == c]['prob'][0]
     41 
     42     print type(lost)

/opt/conda/envs/python2/lib/python2.7/site-packages/pandas/core/series.pyc in __getitem__(self, key)
    599         key = com._apply_if_callable(key, self)
    600         try:
--> 601             result = self.index.get_value(self, key)
    602 
    603             if not is_scalar(result):

/opt/conda/envs/python2/lib/python2.7/site-packages/pandas/core/indexes/base.pyc in get_value(self, series, key)
   2426         try:
   2427             return self._engine.get_value(s, k,
-> 2428                                           tz=getattr(series.dtype, 'tz', None))
   2429         except KeyError as e1:
   2430             if len(self) > 0 and self.inferred_type in ['integer', 'boolean']:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value (pandas/_libs/index.c:4363)()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value (pandas/_libs/index.c:4046)()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc (pandas/_libs/index.c:5085)()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item (pandas/_libs/hashtable.c:13913)()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item (pandas/_libs/hashtable.c:13857)()

KeyError: 0

Вот чего я не понимаю: выигрыш и проигрыш имеют один и тот же формат, почему win был в порядке, но lost выдал ошибку? Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
873
1

Ответы 1

Потому что вы получаете categories из всего фрейма данных, но для выигрышей и проигрышей вы фильтруете их по подмножеству, иногда его не существует

Например, df, как показано ниже

  result my_classification      prob
0    Won        ENTERPRISE  0.657895
1    Won        COMMERCIAL  0.342105
2   Lost        ENTERPRISE  0.611842

когда ты делаешь

df[df.result == 'Lost'][df['my_classification'] == 'COMMERCIAL']['prob'][0]

он вернет ошибку

Мое решение с использованием groupby

df.groupby(['result','my_classification']).head(1)

Но в моем случае ошибка возникла, когда в группе List нет отсутствующей категории. Я также пробовал: df.groupby (['result', 'my_classification']). Head (1) ... все та же ошибка ...

Edamame 22.04.2018 08:44

Я заметил, что если я заменяю "df ['my_classification'] == c" на df ['my_classification'] == 'ENTERPRISE', жесткое кодирование значения категории устраняет ошибку ... почему это?

Edamame 22.04.2018 08:56

Другие вопросы по теме