Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.python > #7753

Re: minimi relativi in dataframe

From jak <nospam@please.ty>
Newsgroups it.comp.lang.python
Subject Re: minimi relativi in dataframe
Date 2020-03-18 11:46 +0100
Organization Aioe.org NNTP Server
Message-ID <r4su6k$1gic$1@gioia.aioe.org> (permalink)
References <r4q90q$1c81$1@gioia.aioe.org>

Show all headers | View raw


Il 17/03/2020 11:32, dan258 ha scritto:
> Ciao a tutti, vedo che il gruppo e' "poco" frequentato ma lascio lo 
> stesso il mio messaggio in bottiglia, magari leggero' la risposta quando 
> saro' all'ospizio e moriro' felice :-).
> Tornando seri, essendo alle prime armi ho un problema che non riesco a 
> risolvere con i dataframe.
> Faccio un esempio
> ------------------------------------------------
> from pandas import DataFrame
> 
> data = DataFrame({'a':[2.3, 1.9, 3.5, 2.8, 3.1, 2.7, 3.3]})
> 
> mask = (data['a'].shift(1) > data['a']) & (data['a'].shift(-1) > data['a'])
> 
> data['b'] = data.loc[mask,'a']
> data['b'] = data['b'].shift(1)
> data = data.fillna(method='ffill')
> 
> data['c'] = data['a']-data['b']
> 
> print data
> --------------------------------------------------
> 
> da cui si ricava questo dataframe
> 
>       a    b    c
> 0  2.3  NaN  NaN
> 1  1.9  NaN  NaN
> 2  3.5  1.9  1.6
> 3  2.8  1.9  0.9
> 4  3.1  2.8  0.3
> 5  2.7  2.8 -0.1
> 6  3.3  2.7  0.6
> 
> In a abbiamo una serie di valori
> In b vengono creati dei minimi relativi di quei valori
> In c faccio un controllo, e ho bisogno che nella colonna non ci siano 
> valori negativi, quindi, per ogni riga, a deve essere maggiore di b. 
> Nella riga 5 non accade e per correggere dovrei scorrere indietro (mai 
> avanti) la colonna b finche' non trovo il primo valore di b minore di 2.7
> In questo caso sarebbe 1.9
> 
> dovrei ottenere qualcosa del genere
> 
>       a    b    c
> 0  2.3  NaN  NaN
> 1  1.9  NaN  NaN
> 2  3.5  1.9  1.6
> 3  2.8  1.9  0.9
> 4  3.1  2.8  0.3
> 5  2.7  1.9  0.8
> 6  3.3  2.7  0.6
> 
> pensavo di usare expanding ma mi manca qualche tassello
> come si puo' fare senza iterare che ci mette una vita?

Ciao,
se sono riuscito a capire l'esempio, dovresti poter ridurre 
significativamente le iterazioni considerando il fatto che se il valore 
per la colonna B di un dato A non è quello adiacente a sinistra, lo 
dovrebbe essere il primo già trovato per la colonna B minore dell'A 
corrente.

Back to it.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

minimi relativi in dataframe dan258 <dan@258.boh> - 2020-03-17 11:32 +0100
  Re: minimi relativi in dataframe jak <nospam@please.ty> - 2020-03-18 11:46 +0100
    Re: minimi relativi in dataframe dan258 <dan@258.boh> - 2020-03-18 14:28 +0100
      Re: minimi relativi in dataframe jak <nospam@please.ty> - 2020-03-18 16:15 +0100
        Re: minimi relativi in dataframe dan258 <dan@258.boh> - 2020-03-18 22:29 +0100
          Re: minimi relativi in dataframe jak <nospam@please.ty> - 2020-03-20 19:31 +0100
            Re: minimi relativi in dataframe dan258 <dan@258.boh> - 2020-03-22 09:47 +0100
              Re: minimi relativi in dataframe jak <nospam@please.ty> - 2020-03-22 11:21 +0100
                Re: minimi relativi in dataframe dan258 <dan@258.boh> - 2020-03-22 12:22 +0100
  Re: minimi relativi in dataframe huhher <elia.toselli@outlook.it> - 2020-08-09 20:17 +0200

csiph-web