2016-02-10 5 views
5

Ho un dataframe panda che converto a NumPy matrice come segue:Converti dataframe elencare

df.values 

che dà il seguente risultato:

array([[2], 
     [0], 
     [1], 
     ..., 
     [0], 
     [1], 
     [0]], dtype=int64) 

Tuttavia voglio ottenere l'elenco come segue :

[0, 2, 3] 

Qualche idea su come procedere?

+0

voi significa 'df.values.tolist()'? – EdChum

risposta

2

Forse è possibile utilizzare iloc o loc per la selezione di colonna e quindi tolist:

print df 
    a 
0 2 
1 0 
2 1 
3 0 
4 1 
5 0 

print df.values 
[[2] 
[0] 
[1] 
[0] 
[1] 
[0]] 

print df.iloc[:, 0].tolist() 
[2, 0, 1, 0, 1, 0] 

O forse:

print df.values.tolist() 
[[2L], [0L], [1L], [0L], [1L], [0L]] 

print df.iloc[:, 0].values.tolist() 
[2L, 0L, 1L, 0L, 1L, 0L] 

print df.loc[:, 'a'].tolist() 
[2, 0, 1, 0, 1, 0] 

print df['a'].tolist() 
[2, 0, 1, 0, 1, 0] 

Ma forse è necessario flatten:

print df.values.flatten() 
[2 0 1 0 1 0] 

print df.iloc[:, 0].values.flatten() 
[2 0 1 0 1 0] 
0

Sembra che tu abbia un dataframe con una colonna e più righe. Ricorda che questo è un array bidimensionale, devi dividere la prima colonna e quindi elencare i valori all'interno di quella colonna.

Questo dovrebbe farlo:

df[0].values.tolist() 

df[0] - Consente di selezionare tutti i valori nella prima colonna. Per la seconda colonna devi usare df[1] terzo df[2] e così via.

Puoi dire la forma del tuo dataframe eseguendo df.shape. Questo ti dirà quante righe e colonne esistono nel tuo dataframe, ad es. (9,1) che significa 9 righe e 1 colonna