Я думаю, это должно быть просто, но я попробовал несколько идей, и ни одна из них не сработала:
last_row = len(DF)
DF = DF.drop(DF.index[last_row]) #<-- fail!
Я пробовал использовать отрицательные индексы, но это тоже приводило к ошибкам. Я, должно быть, все еще неправильно понимаю что-то основное.
DF = DF[:-1]
?Ответы:
Чтобы удалить последние n строк:
Таким же образом можно отбросить первые n строк:
источник
где n - последнее число отбрасываемых строк.
Чтобы удалить последнюю строку:
источник
Поскольку позиционирование индекса в Python основано на 0, на самом деле не будет элемента в
index
месте, соответствующемlen(DF)
. Вам нужно, чтобы это былоlast_row = len(DF) - 1
:Однако гораздо проще просто написать
DF[:-1]
.источник
Удивлен, что никто не поднял этот вопрос:
Выполнение теста скорости на DataFrame из 1000 строк показывает, что нарезка и
head
/tail
примерно в 6 раз быстрее, чем при использованииdrop
:источник
head()
иtail()
создают представление, тогда как наdrop()
самом деле изменяет представление в памяти (либо модификация на месте, либо создает полностью новый фрейм данных). Я не искал это в документации, кто-нибудь, пожалуйста. (если это разница: хорошее объяснение для perf diff, и нужно тщательно выбирать между ними) /head
,tail
иdrop
все они возвращают представление, хотя это правда, чтоdrop
дает вам возможность изменить исходный фрейм данных на месте.Вывод статистики:
просто используйте
skipfooter=1
Вывод stats_2
источник
drop возвращает новый массив, поэтому он захлебнулся в сообщении og; У меня было аналогичное требование переименовать некоторые заголовки столбцов и удалить некоторые строки из-за плохо сформированного файла csv, преобразованного в Dataframe, поэтому после прочтения этого сообщения я использовал:
и это сработало отлично, как вы можете видеть из двух закомментированных строк выше, я попробовал метод drop. (), и он работает, но не так круто и читабельно, как при использовании [n: -n], надеюсь, это кому-то поможет, спасибо.
источник
Для более сложных DataFrames, которые имеют мультииндекс (скажем, «Акция» и «Дата»), и нужно удалить последнюю строку для каждой Акции, а не только последнюю строку последней Акции, тогда решение гласит:
Поскольку
groupby()
он добавляет дополнительный уровень к мультииндексу, мы просто опускаем его в конце использованияreset_index()
. Результирующий df сохраняет тот же тип мультииндекса, что и до операции.источник