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

问题描述 投票:0回答:1

我想转换下面的熊猫数据帧,

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)
python pandas numpy
1个回答
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 ]]])
© www.soinside.com 2019 - 2024. All rights reserved.