2016-10-20 12 views
0

Ich bin neu in Python und Pandas. Und ich habe ein Problem beim Erstellen von Panel bei Pandas.Erstellen von Panel von DataFrame

def sq_error(w0,w1,x,y): 
    return (y - (w0 - w1 * x)) ** 2; 


d = dict() 
w0 = 50 
for w1 in range(0, 10): 
    data['height_error'] = data.apply(lambda row: sq_error(w0,w1,row['Weight'], 
               row['Height']), axis=1) 
    df = data[['height_error','Weight']] 
    d['df'] = df 
    d['w1'] = w1 


p = pd.Panel(d) 

Ich erhalte Fehler 'int' Objekt hat kein Attribut 'Form'

ich mit der Liste versucht

d = dict() 
w0 = 50 
for w1 in range(0, 10): 
    data['height_error'] = data.apply(lambda row: sq_error(w0,w1,row['Weight'], 
               row['Height']), axis=1) 
    l = df[['height_error','Weight']].values.tolist() 
    d['df'] = l 
    d['w1'] = w1 

p = pd.Panel(d) 

Aber immer noch denselben Fehler

+0

wo ist sq_error()? soll die erste Zeile 'data = dict()' lauten? – Yugi

+0

Nein, ist es nicht. d sollte 3-d-Wörterbuch speichern – aLLex

+0

Daten ist DataFrame [['Gewicht', 'Höhe']] – aLLex

Antwort

0

Pandas immer versucht, Zugriff w1 als Datenrahmen, aber es ist ein int. So selbstverständlich ist es nicht eine Form Attribut haben

Sie sollten d schreiben [w1] = df

d = dict() 
w0 = 50 
for w1 in range(0, 10): 
    data['height_error'] = data.apply(lambda row: sq_error(w0,w1,row['Weight'],row['Height']), axis=1) 
    l = df[['height_error','Weight']].values.tolist() 
    d[w1] = df 

p = pd.Panel(d) 

So Pandas es als ein Wörterbuch mit Integer-Schlüssel und Datenrahmen Werte annehmen.

+0

Eigentlich meine ich – aLLex

+0

Daten ['w1'] = w1 df = Daten [['Höhe_Fehler', 'Gewicht'] ] df2 = Daten [['w1']] d ['df'] = df d ['w1'] = df2 – aLLex