Path: csiph.com!aioe.org!.POSTED.nP9ZZnVmsJfio7Iw3p6b8g.user.gioia.aioe.org!not-for-mail From: jak Newsgroups: it.comp.lang.python Subject: Re: minimi relativi in dataframe Date: Sun, 22 Mar 2020 11:21:51 +0100 Organization: Aioe.org NNTP Server Lines: 30 Message-ID: References: NNTP-Posting-Host: nP9ZZnVmsJfio7Iw3p6b8g.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 Content-Language: it X-Notice: Filtered by postfilter v. 0.9.2 Xref: csiph.com it.comp.lang.python:7759 Il 22/03/2020 09:47, dan258 ha scritto: > Il 20/03/2020 19:31, jak ha scritto: >> Non mi è ancora chiara una cosa: chi dei due ha più importanza? recente >> o basso? mi faresti degli esempi esplicativi? > > Sapevo che era difficile :-) > Ti posto un modo che mi e' venuto in mente per correggere la colonna b, > ma purtroppo devo iterare. Spero valga piu' delle parole. > Si tratta di fare la stessa cosa di questo codice, ma piu' veloce, > almeno 10 volte piu' veloce. > > > sup = data['b'].drop_duplicates() > for i,v in data.loc[data['a'] < data['b'],'a'].iteritems(): >     mask = (sup.index < i) & (sup < v) >     sup2 = sup.values[mask.values] >     data.at[i,'c'] = sup2[-1] if len(sup2) > 0 else NaN > > Beh, non difficile, solo poco chiaro. Sembra che tu abbia un approccio più matematico che informatico. Per farti un esempio, tu crei 'sup' poi la utilizzi nel ciclo però se tu aggiungessi i dati in una lista unica mano a mano che li incontri ecco che faresti la ricerca in una lista molto piú corta che poi, naturalmente si allunga ma nel frattempo si è ridotto il numero di iterazioni ed avresti un indice in meno da gestire. Non parlo solo delle tue iterazioni ma anche di quelle non visibili tipo quelle che avvengono in seguito ad istruzioni tipo: sup2 = sup.values[mask.values]