Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.python > #7753
| 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> |
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 | Next — Previous in thread | Next in thread | Find similar
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