首页 > 解决方案 > 将数组元组(?)保存为数据框

问题描述

我在 python 中有一个函数,它返回五个数组。我想把这些数组变成一个 dataframe 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. 如何将这些数组变成一个数据框?这甚至可能还是它们的长度不同?

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

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

标签: pythonarrayspandasfunctiondataframe

解决方案


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”错误,请确保在将结果变量实际分配给数据框之前不要使用它。


推荐阅读