Индекс сброса Pandas не работает?

Я не уверен, где я ошибаюсь, но я не могу сбросить индекс на фрейме данных.

когда я запускаю test.head(), Я получаю следующий вывод:

test.head

как вы можете видеть, фрейм данных является срезом, поэтому индекс выходит за рамки. Что я хотел бы сделать, так это сбросить индекс для этого фрейма данных. Поэтому я бегу test.reset_index(drop=True). Это приводит к следующему:

reset

это похоже на новый индекс, но это не так. Бег!--2--> опять индекс все тот же. Попытка использовать lambda.apply или iterrows() создает проблемы с данными таблицы.

как я могу сбросить индекс?

4 ответов


reset_index по умолчанию не изменяет фрейм данных; он возвращает новая DataFrame с индексом сброса. Если вы хотите изменить оригинал, используйте : df.reset_index(drop=True, inplace=True). В качестве альтернативы назначьте результат reset_index делать df = df.reset_index(drop=True).


ответ Бренбарна работает.

следующее также работало через этой теме, что является не столько устранением неполадок, сколько артикуляцией того, как сбросить индекс:

test = test.reset_index()
del test['index']

Я бы добавил в ответ кода veritas:

Если у вас уже указан столбец индекса, вы можете сохранить del, конечно. В моем гипотетическом примере:

    df_total_sales_customers = pd.DataFrame({'Sales': total_sales_customers['Sales'],
                              'Customers': total_sales_customers['Customers']}, index = total_sales_customers.index)

    df_total_sales_customers = df_total_sales_customers.reset_index()

расширения в коде veritas'ы ответ... вместо того, чтобы делать del в конце:

test = test.reset_index()
del test['index']

вы можете установить падение в True.

test = test.reset_index(drop=True)