2012-09-27 99 views
4

我想用不同的数据框创建面板,我尝试编写一个函数来返回此面板。我使用了一些已经写好的函数createNewDf(i),它根据给定的数值从现有数据返回dataFrame。在Python中将数据框添加到面板熊猫

def panelCreation(): 
    dp1 = Panel({}) 
    for i in range(1,3): 
     name = 'X' + str(i) 
     name = createNewDf(i) 
    dp1.update(name)  # This does not work 
    return dp1 

我找不到到位的dp1.update(name)

回答

6

方法的名称如何只创建面板出数据帧的字典吗?

In [10]: dd = {} 

In [11]: for i in range(1, 3): 
    ....:  name = 'X' + str(i) 
    ....:  dd[name] = DataFrame(np.random.randn(3,3)) 
    ....:  

In [12]: Panel(dd) 
Out[12]: 
<class 'pandas.core.panel.Panel'> 
Dimensions: 2 (items) x 3 (major) x 3 (minor) 
Items: X1 to X2 
Major axis: 0 to 2 
Minor axis: 0 to 2 

因此,像:

def panelCreation(): 
    dd = {} 
    for i in range(1,3): 
     name = 'X' + str(i) 
     dd[name] = createNewDf(i) 
    return Panel(dd) 
+0

它所做的工作,但有一样'.append'功能来添加新dataFrames已经存在的面板,但不改变字典。 'X4 =数据框(np.random.randn(3,4))'' my_panel.update(X4)' 但是,这给了我一个错误 – tomasz74

+1

如何只'my_panel [ '新'] = X4' –

+4

@ChangShe奇怪的是,与dict不同的是,如果面板是空的(首次使用填充的'DataFrame'初始化面板),那么在添加'new''DataFrame'之前,当您试图检索带有my_panel ['new']'或'my_panel.get('new')的'DataFrame'只会得到一个空的DataFrame(忽略DataFrame中的数据)。因此,在使用其[']'setter添加更多内容之前,请小心使用DataFrame初始化'Panel'。 – hobs