【问题标题】:Adding DataFrame to Panel in Python pandas在 Python pandas 中将 DataFrame 添加到面板
【发布时间】:2012-09-19 02:40:04
【问题描述】:

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

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) 的方法名称

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    用 DataFrame 的字典创建 Panel 怎么样?

    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)
    

    【讨论】:

    • 它确实可以完成工作,但是是否有类似.append 的功能可以将新数据帧添加到现有面板,但不要更改为 dict。 X4 = DataFrame(np.random.randn(3, 4)) my_panel.update(X4) 但这给了我一个错误
    • my_panel['new'] = X4怎么样
    • @ChangShe 奇怪的是,与 dict 不同,如果面板一开始是空的(您不会使用填充的 DataFrame 初始化面板),然后添加 new DataFrame ,然后,当您尝试使用my_panel['new']my_panel.get('new') 检索DataFrame 时,您只会得到一个空的DataFrame(DataFrame 中的数据被忽略)。因此,在使用 [] 设置器添加更多内容之前,请小心使用 DataFrames 初始化 Panel
    • @hobs 刚刚检查过,你是对的。这在任何地方都有记录吗?行为与 Series 和 DataFrame 非常不同,你甚至不能使用 pd.append
    • 感谢@astrojuanlu 的复制!如果您/我们在明显的地方找不到它,您/我们应该提交文档 PR。我相信他们会很感激的。 @ChangShe 应该澄清这个答案。
    猜你喜欢
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 2017-06-04
    • 1970-01-01
    相关资源
    最近更新 更多