2017-06-21 1 views
0
frame = [] 
for i in range(1,21): 
    frame.append(sampler(i))   
# sampler is a function which return an array of 764*36 

header = ['Act_High', 'Act_Low', 'Act_Avg', 'Precip_Amt', 'Festival_Impact', 
     'Val_Share', 'Variable_Disc___ValueOff__Rs', 
     'Non_Discounted_Gross_Revenue__Rs__', 'Fixed_Disc___ValueOff__Rs', 
     'Total_Volume__No__', 'unitMrp', 'Variable_Disc___PerOff__Rs', 
     'Fixed_Disc___FOC__Rs', 'Variable_Disc___FOC__Rs', 
     'Fixed_Disc___PerOff__Rs', 'Total_Volume__No__rmean', 
     'Non_Discounted_Gross_Revenue__Rs__rmean', 'Total_Volume__No__rmax', 
     'Non_Discounted_Gross_Revenue__Rs__rmax', 'Total_Volume__No__rmin', 
     'Non_Discounted_Gross_Revenue__Rs__rmin', 'Total_Volume__No__rstd', 
     'Non_Discounted_Gross_Revenue__Rs__rstd', 'Total_Volume__No__rymean', 
     'Non_Discounted_Gross_Revenue__Rs__rymean', 'Apr', 'Aug', 'Dec', 
     'Feb', 'Jan', 'Jul', 'Jun', 'Mar', 'May', 'Nov', 'Oct', 'Sep'] 


frame = np.nan_to_num(frame) 
frame = pd.DataFrame(frame, columns = header) 





ValueError: Shape of passed values is (1, 20), indices imply (37, 20) 
+0

Was macht der Sampler? – Eliethesaiyan

+0

tut Sampler definitiv tun, was Sie denken, dass es tut? Wie sieht der Rahmen nach der for-Schleife aus? – Baldrickk

+0

Sampler (1) .shape -> (767, 37) –

Antwort

0

Okay, hallo.

Ich versuche, Ihre Umgebung ein wenig zu rekonstruieren, um Ihnen bei dem Problem zu helfen. Ich hoffe, ich verstehe richtig, dass sampler(i=1) ein Array von der ersten Position mit der Form (767, 37) zurückgibt.

Lassen Sie uns eine Dummy-Funktion machen aus all dies:

def sampler(i): 
a = np.empty((21, 764, 36)) 
return a[i] 

Also, wenn ich sampler(i=1).shape definieren sie ein Array von einer Form zurückkehrt (767, 37)!

Dann, wenn ich anhänge eine Liste Rahmen mit 20 Arrays genannt (wie Sie in einer Schleife zu tun), es ist immer noch ein 1-d Eingang für einen Datenrahmen, die nicht geeignet ist, weil pd.DataFrame(data=data, ...) 2-D-Eingang erfordert. Ihr Rahmen ist weder 3-d-Eingang noch 2-d-Eingang als ValueError-Zustände.

Nehmen wir ein Beispiel betrachten:

a = sampler(i=1) 
a.shape # (767, 37) 
b = pd.DataFrame(data=a, columns=header) 

Es wird ein Datenrahmen schaffen, in denen jeweils Spalten entsprechend markiert ist. In Ihrem Fall versuchen Sie jedoch, 20 Elemente Rahmen, die auch eine 1-d-Liste ist, mit 37 Etiketten zu beschriften.

Sie könnten die folgenden beheben das Problem laufen nehme ich an:

frame = np.nan_to_num(frame) 
frame = np.array(frame) 
frame = np.reshape(-1, 37) 
frame = pd.DataFrame(frame, columns=header) 

ich nicht ganz sicher bin, ob es hilft, weil ich nicht weiß, was Sie wirklich wollen aus Anhängen, dass Rahmen Liste. Wenn Sie genauer auf Ihre Frage eingegangen sind, könnte ich vielleicht helfen.

E.

Verwandte Themen