Mi chiedo se esiste un modo più semplice ed efficiente in termini di memoria per selezionare un sottoinsieme di righe e colonne da un DataFrame panda.Come convertire un sottoinsieme DataFrame pandas di colonne E righe in una matrice numpy?
Ad esempio, dato questo dataframe:
df = DataFrame(np.random.rand(4,5), columns = list('abcde')) print df a b c d e 0 0.945686 0.000710 0.909158 0.892892 0.326670 1 0.919359 0.667057 0.462478 0.008204 0.473096 2 0.976163 0.621712 0.208423 0.980471 0.048334 3 0.459039 0.788318 0.309892 0.100539 0.753992
voglio solo le righe in cui il valore di colonna 'c' è maggiore di 0,5, ma ho solo bisogno colonne 'b' e 'e' per quelle file.
Questo è il metodo che ho trovato - forse c'è un modo migliore di "panda"?
locs = [df.columns.get_loc(_) for _ in ['a', 'd']] print df[df.c > 0.5][locs] a d 0 0.945686 0.892892
Il mio obiettivo finale è quello di convertire il risultato in una matrice NumPy di passare in un algoritmo sklearn di regressione, così ho utilizzerà il codice di cui sopra in questo modo:
training_set = array(df[df.c > 0.5][locs])
... e che Pix io da quando finisco con una copia di matrice enorme nella memoria. Forse c'è anche un modo migliore per farlo?
Più elegante. Qual è la differenza tra .ix e .loc? –
loc non tenterà di utilizzare un numero (ad esempio 1) come argomento posizionale (e alza invece); vedere i principali documenti panda/selezionare i dati – Jeff