dataframe到np.array - IndexError:元组索引超出范围

时间:2017-12-28 18:13:53

标签: python pandas numpy

我正在尝试转换下面的pandas数据框,

pd.DataFrame({'PE': [115.45, 8], 'PE FY1': [11, 12], 'EV/Sales':[0.4, 1.9], 'EV/EBIT':[16, 9.8],
                'EV/EBITDA': [10.8, 7.5]})

到一个np.array但在多个方括号内 - 如下所示 - 但到目前为止还不成功。我不确定这个结构的正确名称,但需要在此为scikit学习。我在下面的工作是为了我想做的事情,只是到达那里。

q = np.array([[[115.45,11.00,0.40,16.00,10.80]], [[8.00,12.00,1.90, 9.80,7.50]]])

无论我尝试什么,我最终都会在错误的位置使用普通括号或者IndexError:元组索引超出范围,因为我通过回归器和树解释器运行它 - 如下所示

Latest_feature_values = pd.DataFrame({'PE': [115.45, 8], 'PE FY1': [11, 12], 'EV/Sales':[0.4, 1.9], 'EV/EBIT':[16, 9.8],
                'EV/EBITDA': [10.8, 7.5]})

Latest_feature_values = np.array(Latest_feature_values.values)

1 个答案:

答案 0 :(得分:2)

v = df.values
v

array([[ 115.45,   11.  ,    0.4 ,   16.  ,   10.8 ],
       [   8.  ,   12.  ,    1.9 ,    9.8 ,    7.5 ]])

如果使用多个括号,表示您希望将尺寸扩展1(以便获得形状(2, 1, 5)的输出),则可以选择几个选项 -

np.expand_dims(v, 1)

或者,

v[:, np.newaxis]

或者,

v[:, None]

或(仅限于2D阵列,需要更改N-D阵列),

i, j = v.shape
v.reshape((i, 1, j))
array([[[ 115.45,   11.  ,    0.4 ,   16.  ,   10.8 ]],

       [[   8.  ,   12.  ,    1.9 ,    9.8 ,    7.5 ]]])