Имена столбцов Pandas не найдены после группировки и агрегирования

#python #python-3.x #pandas

#python #python-3.x #pandas

Вопрос:

Вот мои данные

 threats = pd.read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-08-18/threats.csv', index_col = 0)
  

И вот мой код —

 df = (threats
.query('threatened>0')
.groupby(['continent', 'threat_type'])
.agg({'threatened':'size'}))
  

Однако результатом является df.columns только Index(['threatened'], dtype='object') . То есть отображается только столбец threatened, а не столбцы, которые я фактически сгруппировал, т.е. continent и threat_type, хотя они присутствуют в моем фрейме данных.

Я хотел бы выполнить операцию над столбцом continent моего фрейма данных, но он не отображается как один из столбцов. Например — continents = df.continent.unique() . Эта команда выдает мне ключевую ошибку continent не найдено.

Комментарии:

1. Вы reset_index ?

2. Да, я пробовал это df = df.reset_index(drop=True) . Ничего не делает.

3. Не делайте drop=True . Это приведет к удалению тех столбцов groupby, которые находятся в индексе.

Ответ №1:

После groupby … pandas помещает столбцы groupby в индекс. Всегда сбрасывайте индекс после выполнения groupby в pandas и не выполняйте drop=True .

После вашего кода.

 df = df.reset_index()
  

И тогда вы получите требуемые столбцы.