2017-07-26 3 views
4

Ich habe ein numpy Array wie folgt aussehen:Numpy Array Pandas Datenrahmen spaltenweise (As einreihig)

a = np.array([35,2,160,56,120,80,1,1,0,0,1]) 

Dann das Array in Pandas Datenrahmen mit Logik „Ich versuche, eine Spalte zu verwandeln -on-Wert“wie folgt aus:

columns=['age','gender','height', 
    'weight','ap_hi','ap_lo', 
    'cholesterol','gluc','smoke', 
    'alco','active'] 

values = a 

df = pd.DataFrame(a,columns=columns) 

Dieser Ansatz hebt Valueerror: Form der übergebenen Werte (1, 11), Indizes bedeuten (11, 11). Was mache ich falsch und wie führe ich es richtig aus?

Danke!

Antwort

6

Sie benötigen numpy.reshape:

columns=['age','gender','height', 
    'weight','ap_hi','ap_lo', 
    'cholesterol','gluc','smoke', 
    'alco','active'] 

a = np.array([35,2,160,56,120,80,1,1,0,0,1]) 

df = pd.DataFrame(a.reshape(-1, len(a)),columns=columns) 
print (df) 
    age gender height weight ap_hi ap_lo cholesterol gluc smoke alco \ 
0 35  2  160  56 120  80   1  1  0  0 

    active 
0  1 

Wenn der reshape Betrieb nicht klar ist, zu lesen, eine explizitere Weise eine Dimension der 1D-Array der Zugabe ist numpy.atleast_2d

pd.DataFrame(np.atleast_2d(a), columns=columns) 

Oder einfacher zu benutzen add [] (aber langsamer, wenn wirklich viele Spalten):

df = pd.DataFrame([a],columns=columns) 
print (df) 
    age gender height weight ap_hi ap_lo cholesterol gluc smoke alco \ 
0 35  2  160  56 120  80   1  1  0  0 

    active 
0  1 

Dank Divakar für suggestion:

df = pd.DataFrame(a[None],columns=columns) 
print (df) 
    age gender height weight ap_hi ap_lo cholesterol gluc smoke alco \ 
0 35  2  160  56 120  80   1  1  0  0 

    active 
0  1 

Und eine andere Lösung, dank piRSquared:

pd.DataFrame([a], [0], columns) 
+4

Kürzere: 'pd.DataFrame (a [Keine], Spalten = Spalten)'. – Divakar

+0

pd.DataFrame ([a], [0], Spalten) – piRSquared

0

umformen einfach das Array zu dem, was Sie für den Datenrahmen benötigen.

import pandas as pd 
import numpy as np 

a = np.array([35,2,160,56,120,80,1,1,0,0,1]) 

columns=['age','gender','height', 
'weight','ap_hi','ap_lo', 
'cholesterol','gluc','smoke', 
'alco','active'] 

df = pd.DataFrame(np.reshape(a, (1,len(a))),columns=columns) 
Verwandte Themen