[Python] permettere l'accesso ad una lista di oggetti in diversi modi
Andrea D'Amore
and.damore a gmail.com
Dom 4 Dic 2016 08:55:31 CET
2016-12-03 23:01 GMT+01:00 Davide Olianas <davide a davideolianas.com>:
> mi trovo a dover lavorare con dei file .xyz che sono dei file di testo del
> genere
>
> C -3.95384 -0.70179 0.00000
> C -3.93661 -2.09651 0.00000
[…]
> ovvero ogni riga contiene un atomo con informazione sull’elemento atomico e
> le coordinate.
> Il problema su cui chiedo consigli è che
> contemporaneamente mi serve poter selezionare un atomo in base ad un indice
> “locale”, ovvero un indice che appartiene all’elemento chimico. In questo
> caso, dovrei poter iterare sul carbonio 6 volte (indice da 0 a 5) e
> sull’idrogeno pure.
> Per esempio, vorrei poter fare qualcosa tipo atoms.byElementIndex('H', 0)
> per selezionare il primo idrogeno.
[…]
Se non ho capito male ti conviene usare pandas, puoi usare un
DataFrame usando una selezione booleana [1] tipo
h_atoms = data[data['atom'] == 'H']
e
h_atoms[:, 0]
per avere la prima riga tra gli atomi di idrogeno.
Ci sono due indici nell'ultimo subscript perché il risultato della
selezione booleana è di nuovo un DataFrame, che è bidimensionale.
Pandas ha una curva di apprendimento che non è immediata, almeno non
lo è stato per me, ti conviene leggere l'introduzione "10 minutes to
pandas" e poi la parte specifica sulle strutture dati che ho indicato.
[1]: http://pandas.pydata.org/pandas-docs/stable/dsintro.html#indexing-selection
--
Andrea
Maggiori informazioni sulla lista
Python