невозможно выбрать указанный c столбец после объединения его с другим фреймом данных - PullRequest
1 голос
/ 29 мая 2020
unitown=pd.merge(Q1(),Q5(),how='inner',left_on=['State','RegionName'],right_index=True)

Я создал этот новый фрейм данных под названием unitown после слияния двух фреймов данных с индексом «State» и «RegionName». Ниже показано, как выглядит unitown: введите здесь описание изображения

из числа пи c вы можете увидеть, что столбец имеет название в формате Год и Квартал. Однако, когда я пытаюсь unitown['2000Q1'], я получаю следующую ошибку:

 2798             if self.columns.nlevels > 1:
   2799                 return self._getitem_multilevel(key)
-> 2800             indexer = self.columns.get_loc(key)
   2801             if is_integer(indexer):
   2802                 indexer = [indexer]
~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2646                 return self._engine.get_loc(key)
   2647             except KeyError:
-> 2648                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2649         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2650         if indexer.ndim > 1 or indexer.size > 1:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: '2000Q1'*

Я пробовал unitown.columns.tolist(), и ниже является частью вывода:

['State',
 'RegionName',
 Period('2000Q1', 'Q-DEC'),
 Period('2000Q2', 'Q-DEC'),
 Period('2000Q3', 'Q-DEC'),
 Period('2000Q4', 'Q-DEC'),
 Period('2001Q1', 'Q-DEC'),
 Period('2001Q2', 'Q-DEC'),
 Period('2001Q3', 'Q-DEC'),
 Period('2001Q4', 'Q-DEC'),
 Period('2002Q1', 'Q-DEC'),
 Period('2002Q2', 'Q-DEC'),
 Period('2002Q3', 'Q-DEC'),

Я не уверен почему он дает такую ​​ошибку, учитывая, что «2000Q1» явно является одним из имен столбцов. Может ли кто-нибудь помочь мне в этом? Большое спасибо!

1 Ответ

1 голос
/ 29 мая 2020

Это должно решить проблему:

df.columns = [str(col) for col in df.columns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...