2017-06-21 3 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

サンプラーは何ですか? – Eliethesaiyan

+0

サンプラーは間違いなくあなたが思うことをしていますか? forループの後にフレームはどのように見えますか? – Baldrickk

+0

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

答えて

0

いいえ。

問題を解決するために少し環境を再構築しようとしています。 sampler(i=1)が(767,37)の形をした最初の位置から配列を返すことを正しく理解することを願っています。

のは、このすべての外にダミー関数を作ってみましょう:私はsampler(i=1).shapeを定義した場合

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

だから、それは形状(767、37)の配列を返します!

そして、Iはフレームと呼ばれるリストを追加した場合に20のアレイと(あなたがループ内で実行されるように)pd.DataFrame(data=data, ...) 2-D入力を必要とするため、それは、依然として不適切であるデータフレームのための1-Dが入力されます。 フレームは、ValueError状態では3-d入力でも2-d入力でもありません。

はの例を考えてみましょう:

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

それは、各列がそれに応じてラベル付けされたデータフレームを作成します。あなたの場合、フレームの20個の要素にラベルを付けるようにしてください。これは1-dリストでもあり、37個のラベルが付いています。

あなたは私が思う問題解決するために、以下を実行できます:私はあなたが本当にから取得したいのか分からないので、私はそれが役立つかどうかは全くわからないんだけど

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

フレームリストを追加します。 あなたがあなたの質問にもっと徹底的に詳しく説明してくれれば、多分私は助けることができました。

E.

関連する問題