【问题标题】:Save tuple of arrays (?) as dataframe将数组元组(?)保存为数据框
【发布时间】:2023-03-04 23:01:01
【问题描述】:

我在 python 中有一个函数,它返回五个数组。我想把这些数组变成一个数据框result。为简洁起见,我将省略函数体,但这是我的代码的样子:

def runmodel():
   ## omitting code for brevity
return a, b, c, d, e

然后,当我运行 run model 时,我会为变量 a,b,c,d,e 返回所有这些代码。

> run()
(array([[ 0.        ,  0.        ,  7.61377153,  0.        ,  0.        ,
      0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
      2.20431486,  0.        ,  0.        ,  0.        ,  0.        ,
      0.        ,  0.        ,  0.        , 13.94209173,  0.        ,
      0.50471147, 18.42825281,  0.        ,  0.        ,  0.        ,
      0.        ,  0.        ,  2.03488863,  0.        ,  0.        ,
      0.        ,  0.        ,  1.44420213,  0.        ,  0.        ,
      0.        , 24.76959413,  0.        ,  1.83168143,  0.        ,
      0.        ,  0.        ,  0.        ,  1.0522511 ,  0.        ,
      0.        ,  1.87509854,  0.        ,  0.        ,  0.        ,
     11.36184872,  0.        , 16.59942782,  0.        ,  0.        ,
     17.33892885,  0.        ,  0.        ,  0.        ,  0.        ,
      0.        ,  0.        ,  1.28199479, 31.76130032,  0.        ,
      0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
     10.29176791, 12.05028586,  5.95222179,  0.        ,  0.        ,
      0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
      2.82531264,  0.        ,  0.        ,  1.62874439,  0.        ,
      4.63870345,  0.        ,  0.        ,  6.47953447,  0.        ,
      0.        ,  0.        ,  0.        , 17.67837878, 11.08462275,
      0.        , 26.08591628,  4.91841726,  0.        , 12.21861283,
      0.        ,  0.        ,  1.46213229,  0.        ,  0.        ,
      0.        ,  0.        ,  0.        ,  0.        ,  1.36157407,
     11.74428328,  0.        ,  0.        ,  0.        ,  0.        ,
     10.21569859,  4.02472319,  8.60214736,  6.64881891, 28.73018726]]),
 array([25.]),
 array([1.]),
 array([0.]),
 array([0.]))

所以,我的问题有两个:

  1. runmodel具体输出的技术术语是什么?它是数组列表还是数组元组.. 还是别的什么?
  2. 如何将这些数组转换为一个数据帧?这甚至可能还是它们的长度不同?

对于第二部分,我尝试在runmodel 中添加行result = pd.dataframe({'a':a, 'b':b, 'c':c, 'd':d}),但随后出现错误; UnboundLocalError: local variable 'result' referenced before assignment.

非常感谢您的帮助。如果这是一个可怕的问题,我很抱歉:我什至不知道从哪里开始。

【问题讨论】:

    标签: python arrays pandas function dataframe


    【解决方案1】:

    runmodel 的具体输出是一个数组元组。为了将它们作为数据框返回,您可以执行以下操作:

    def runmodel():
       ## omitting code for brevity
       result =  pd.DataFrame({
        'Title for a': a,
        'Title for b': b,
        'Title for c': c,
        'Title for d': d,
        'Title for e': e,
        })
       return result
    

    为了避免“UnboundLocalError: local variable 'result' referenced before assignment”错误,请确保在将结果变量实际分配给数据框之前不要使用它。

    【讨论】:

    • 感谢您的回答。现在我得到错误:Exception: Data must be 1-dimensional。变量a 与所有其他变量的维度不同,这是一个问题吗?
    • 实际上是的,如果我从 DataFrame 中省略 a,那么它就可以工作:所以我猜 a 只需要在它自己的数据框中..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    相关资源
    最近更新 更多