pandas reset_index() не работает после применения groupby

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных pandas, подобный этому

введите описание изображения здесь

 df = pd.DataFrame({'id':[1,2,3,4,5], 'Opposition':['Sri Lanka', 'Sri Lanka', 'UAE','UAE','Sri Lanka'],
                   'Inning_no':[1,2,1,2,1], 'Wickets':[13,17,14,18,29]})
 

У меня есть groupby для получения следующего вывода

 t = inn.groupby(['Opposition', 'Inning_no'])['Wickets'].agg([('Wickets', 'sum'), ('Played', 'count')])
 

У меня такой результат

                                     Wickets   Played
            Opposition  Inning_no       
            v Sri Lanka    1           42       4
                           2           17       2
            v UAE          1           14       4
                           2           18       6
 

Проблема в том, что reset_index() не работает с group by . Многоколоночный индекс устанавливается для столбца Opposition и Innings_no. Я хочу, чтобы индекс был сброшен и отображал все на одном уровне, как показано ниже.

введите описание изображения здесь

У меня возникла эта ошибка

 ValueError: cannot insert Opposition, already exists
 

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

1. Вы имеете в виду, что оппозиция и подачи должны быть столбцами, а не индексом, и в качестве индекса вы хотите иметь увеличивающиеся числа?

2. в чем ошибка, когда вы выполняете a .reset_index() в конце своего кода? также, пожалуйста, разместите данные в виде текста вместо изображений, поскольку изображения не могут быть скопированы

3. Вы пытались включить ключевое слово as_index=False в группу по вызову?

4. df.groupby(['Opposition', 'Inning_no'])['Wickets'].agg([('Wickets', 'sum'), ('Played', 'count')]).reset_index() для меня работает нормально

5. У меня тоже все работает нормально (мне просто пришлось заменить inn на df ).

Ответ №1:

Вы можете просто добавить reset_index в конце

 t = inn.groupby(['Opposition', 'Inning_no'])['Wickets'].agg([('Wickets', 'sum'), ('Played', 'count')]).reset_index()