Как исправить мой код - KeyError, но мой код работал раньше? - PullRequest
0 голосов
/ 18 июня 2019

ничего в данных не изменилось, и внезапно мой код перестал работать, даже при возврате к предыдущим версиям. Я не уверен почему, и я не могу понять это. Я сравнил предыдущую версию и надеюсь, что вы найдете то, что мне не хватает, или порекомендуете исправление этой новой ошибки KeyError.

Как я уже говорил, я просмотрел данные, и в этом ничего не изменилось, поэтому я предполагаю, что проблема заключается в моем коде, но даже возврат к более ранней версии (которая ранее работала) не работает.

Перед этим у меня есть два словаря, state_code (сопоставляет каждое состояние с кодом региона) и states (сопоставляет каждое состояние с соответствующей аббревиатурой)

excel_file = r'/Users/amandawhiting/Desktop/PA_spending_excel.xlsx'
df = pd.read_excel(excel_file)
df = df.rename(columns={'DAMAGE_CATEGORY_CODE': 'damageCode', 
                     'FEDERAL_SHARE_OBLIGATED':'FedShareObligated', 'PROJECT_AMOUNT': 'ProjectAmount'})  
df = df[df['FedShareObligated']>= 0] 
df = df[df['ProjectAmount'] >= 0] # Removes missing/null projects
df = df[df['damageCode'] != 'A - Debris Removal']
df = df[df['damageCode'] != 'B - Protective Measures']
df = df[df['damageCode'] != 'Z - State Management']
df = df[df['damageCode'] != 'H - Fire Management']
df = df.drop_duplicates() 
df = df.reset_index(drop=True) 

df2 = pd.read_csv("/Users/amandawhiting/Desktop/DisasterDeclarationsSummaries.csv", usecols = ['disasterNumber', 'fyDeclared', 'state'])
df2 = df2[df2['fyDeclared'] > 1991]
df2 = df2[df2['fyDeclared'] < 2017]
df2 = df2.reset_index(drop=True)  # Resets index
df2['disasterNumber'] = df2['disasterNumber'].astype(int) 

fulldf = pd.merge(df, df2, left_on = 'disasterNumber', right_on = 'disasterNumber', how = 'inner',) 
fulldf = fulldf.drop_duplicates() 
fulldf = fulldf.reset_index(drop=True)

fulldf["Region"] = fulldf['state'].map(state_code)

df_state = fulldf.copy()
df_fyr = fulldf.copy()
df_region = fulldf.copy()
df_damageCat = fulldf.copy()

fulldf["TotalProjectCost, 1.3%"] = round(fulldf["ProjectAmount"] * .013)                                                                                                                   
fulldf["TotalProjectCost, 1.6%"] = round(fulldf["ProjectAmount"] * .016)                                                                      
fulldf["TotalProjectCost, 15%"] = round(fulldf["ProjectAmount"] * .15) 
fulldf["TotalProjectCost, 46%"] = round(fulldf["ProjectAmount"] * .46) 

Следующие строки - это то, что конкретно не дает предыдущего успешного результата:

df_state=df_state[["ProjectAmount"]].groupby('state').sum()

df_state['TotalProjectCost'] = ['${:,.2f}MM'.format(x) for x in     df_state['ProjectAmount'] * (.15) / 1000000]


display(df_state)

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

Фактические результаты: Ошибка ключа

   KeyError                                  Traceback (most recent call last)
   <ipython-input-31-6b223454133a> in <module>
   ----> 1 df_state=df_state[["ProjectAmount"]].groupby('state').sum()
      2 
      3 df_state['TotalProjectCost'] = ['${:,.2f}MM'.format(x) for x in    df_state['ProjectAmount'] * (.15) / 1000000]
      4 
      5 

   /anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in groupby(self, by, axis, level, as_index, sort, group_keys, squeeze, observed, **kwargs)
   7630         return groupby(self, by=by, axis=axis, level=level, as_index=as_index,
   7631                        sort=sort, group_keys=group_keys, squeeze=squeeze,
   -> 7632                        observed=observed, **kwargs)
   7633 
   7634     def asfreq(self, freq, method=None, how=None, normalize=False,

   /anaconda3/lib/python3.7/site-packages/pandas/core/groupby/groupby.py in groupby(obj, by, **kwds)
   2108         raise TypeError('invalid type: {}'.format(obj))
   2109 
   -> 2110     return klass(obj, by, **kwds)

   /anaconda3/lib/python3.7/site-packages/pandas/core/groupby/groupby.py in __init__(self, obj, keys, axis, level, grouper, exclusions, selection, as_index, sort, group_keys, squeeze, observed, **kwargs)
    358                                                     sort=sort,
    359                                                        observed=observed,
   --> 360                                                        mutated=self.mutated)
    361 
    362         self.obj = obj

   /anaconda3/lib/python3.7/site-packages/pandas/core/groupby/grouper.py in _get_grouper(obj, key, axis, level, sort, observed, mutated, validate)
    576                 in_axis, name, level, gpr = False, None, gpr,    None
    577             else:
   --> 578                 raise KeyError(gpr)
    579         elif isinstance(gpr, Grouper) and gpr.key is not None:
    580             # Add key to exclusions

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