g = df.groupby('channel')['amount'].sum().reset_index()
g
Результат:
channel amount 0 email 80.0 1 organic 1620.0 2 paid -30.0
big = df[df['amount'] > 100].reset_index(drop=True)
big[['order_id', 'amount']]
Результат:
order_id amount 0 1001 120.0 1 1003 1500.0
s = df.set_index('order_id')['amount']
s.reset_index().head(2)
Результат:
order_id amount 0 1001 120.0 1 1002 -30.0Порешать Python-задачи в тренажёре →
Почти всегда идёт после groupby/pivot, чтобы вернуть плоскую таблицу, и после фильтрации, чтобы получить чистый 0,1,2… индекс. Частый вопрос на собеседовании — разница reset_index() и reset_index(drop=True).
Без drop старый индекс становится колонкой — это нужно после groupby, чтобы вернуть ключи в данные. С drop=True индекс просто выбрасывается и заменяется на 0,1,2… — удобно после фильтрации строк. Выбор зависит от того, нужны ли вам значения индекса дальше.
Передайте level= с именем или номером уровня: df.reset_index(level='channel'). Остальные уровни останутся в индексе. Можно передать и список уровней, чтобы сбросить несколько сразу.
Меняет объект на месте и возвращает None вместо новой копии. В современном pandas inplace не даёт выигрыша по памяти и его не рекомендуют — лучше присваивать результат: df = df.reset_index().
Pandas: основы · Pandas groupby
groupby · merge · pivot_table · apply · value_counts · drop_duplicates
Открыть Python-тренажёр (556 задач) →