2017-06-21 20 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)形状的第一个位置返回一个数组。

让我们做一个虚拟函数了这一切:

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

所以,如果我定义sampler(i=1).shape它返回的形状(767,37)的阵列!

然后,如果我追加一个称为帧列表 20门阵列(如你在一个循环中那样),但它仍然是一个数据帧,其是不合适的一个1-d的输入,因为pd.DataFrame(data=data, ...)需要2-d的输入。您的既不是3-d输入,也不是ValueError状态的2-d输入。

让我们来看一个例子:

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

它将创建其中每个列相应标记一个数据帧。不过,就你而言,你试图用37个标签来标记框架的20个元素,这也是1-d列表。

您可以运行下面的来解决,我想这个问题:

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

我不能完全肯定这是否会帮助,因为我不知道你真正想要从得到追加框架列表。 如果你更详细地阐述你的问题,也许我可以提供帮助。

E.

相关问题