Я знаю - это верботен.Но когда optimize.curve_fit достигает строки (возможно, 5) одинаковых значений, он завершает работу и возвращает прямую линию.
Я не хочу удалять ВСЕ дубликаты, но я подумал, что мог бы удалить средний член любых идентичных триплетов, не нанося слишком большого ущерба подгонке.
Поэтому я хотел использоватьiterrows, и я пропускаю строки, когда я иду, но я понимаю, что я могу работать с копией, а не с оригиналом.
Или я мог бы просто сделать старомодный цикл с индексом.
Как я могу сделать это безопасно, и таким образом, чтобы конечный параметр цикла обновлялся каждый раз, когда я делаю удаление?
Вот пример:
i = 1
while i < len(oneDate.index)-1:
print("triple=",oneDate.at[i-1,"Nprem"],oneDate.at[i,"Nprem"],oneDate.at[i+1,"Nprem"])
if oneDate.at[i,"Nprem"]==oneDate.at[i-1,"Nprem"] and oneDate.at[i,"Nprem"]==oneDate.at[i+1,"Nprem"]:
print("dropping i=",i,oneDate.at[i,"Nprem"])
oneDate.drop([i])
oneDate = oneDate.reset_index(drop=True)
pause()
else: i = i +1
Я предположилчто при сбросе и сбросе следующий элемент будет перемещен в удаленный слот, поэтому мне не придется увеличивать индекс.Но этого не произошло, поэтому я получил бесконечный цикл.