#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()