2017-11-19 5 views
1

Ich benutze einen Pandas-Datenrahmen, um Daten zu reinigen und zu verarbeiten. Allerdings muss ich es dann in ein numpy ndarray umwandeln, um Exploit-Matrix-Multiplikation zu verwenden. Ich drehe den Datenrahmen in eine Liste von Listen mit den folgenden:Konvertieren Pandas Datenrahmen in numpy ndarray

x = df.tolist() 

Dies liefert die folgende Struktur:

[[1, 2], [3, 4], [5, 6], [7, 8] ...] 

I dann wandeln es in ein numpy Array wie folgt:

x = np.array(x) 

Der folgende Druck jedoch:

print(type(x)) 
print(type(x[0])) 

gibt dieses Ergebnis:

'numpy.ndarray' 
'numpy.float64' 

aber ich brauche sie beide numpy Arrays zu sein. Wenn es nicht aus einem Pandas-Datenrahmen stammt und ich nur eine hart codierte Liste von Listen konvertiere, dann sind es beide ndarrays. Wie erhalte ich die Liste und die Listen in dieser Liste, wenn diese Liste aus einem Datenrahmen erstellt wurde? Vielen Dank fürs Lesen, das hat mich stundenlang ratlos gemacht.

+0

Wenn meine Antwort hilfreich war, vergessen Sie nicht [akzeptieren] (http://meta.stackexchange.com/a/5235/295067) it - klicken Sie auf das Häkchen ('✓') neben der Antwort, um es von ausgegraut zu gefüllt zu schalten. Danke. – jezrael

Antwort

0

Sie können versuchen df.get_values() und schließlich np.reshape es.

1

Ich glaube, Sie brauchen values:

df = pd.DataFrame({'C':[7,8,9,4,2,3], 
        'D':[1,3,5,7,1,0]}) 

print (df) 
    C D 
0 7 1 
1 8 3 
2 9 5 
3 4 7 
4 2 1 
5 3 0 

x = df.values 
print (x) 
[[7 1] 
[8 3] 
[9 5] 
[4 7] 
[2 1] 
[3 0]] 

Und wählen Sie dann durch Indizierung:

print (x[:,0]) 
[7 8 9 4 2 3] 

print (x[:,1]) 
[1 3 5 7 1 0] 

print (type(x[:,0])) 
<class 'numpy.ndarray'> 

Auch ist möglich, trans Pose Array:

x = df.values.T 
print (x) 
[[7 8 9 4 2 3] 
[1 3 5 7 1 0]] 

print (x[0]) 
[7 8 9 4 2 3] 

print (x[1]) 
[1 3 5 7 1 0]