Индекс сброса Pandas не работает?
Я не уверен, где я ошибаюсь, но я не могу сбросить индекс на фрейме данных.
когда я запускаю test.head()
, Я получаю следующий вывод:
как вы можете видеть, фрейм данных является срезом, поэтому индекс выходит за рамки.
Что я хотел бы сделать, так это сбросить индекс для этого фрейма данных. Поэтому я бегу test.reset_index(drop=True)
. Это приводит к следующему:
это похоже на новый индекс, но это не так. Бег!--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)