Как я могу изменить фрейм данных Pandas, который я перебираю? - PullRequest
0 голосов
/ 19 октября 2018

Я знаю - это верботен.Но когда 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

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

1 Ответ

0 голосов
/ 19 октября 2018

ОК, я нашел опцию, inplace = True, и теперь она отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...